I have followed query that get data from 3 tables: index_data
, data_bin
and metrics
.
SELECT
index_data.host_name,
data_bin.value
FROM
metrics
INNER JOIN
index_data ON index_data.id = metrics.index_id
INNER JOIN
data_bin ON data_bin.id_metric = metrics.metric_id
WHERE
metrics.metric_name = 'avg';
Here are the results:
host_name | value
================================
namenode1 1.125
namenode1 1
namenode1 1
namenode1 1
namenode1 1
namenode1 4.875
namenode1 1
namenode1 0.875
Centreon-Server 2
Centreon-Server 1
Centreon-Server 2
Centreon-Server 1
Centreon-Server 5
Centreon-Server 1
Centreon-Server 1
Centreon-Server 2
My goal is to get only one record per host_name
with max value
.
So the expected output should be:
namenode1 4.875
Centreon-Server 5
How can I achieve this?
Thanks,
I think below will help you
SELECT
index_data.host_name,
Max(data_bin.value) as value
FROM metrics
inner join index_data ON index_data.id = metrics.index_id
inner join data_bin ON data_bin.id_metric = metrics.metric_id
where metrics.metric_name = 'avg' AND
FROM_UNIXTIME(data_bin.ctime) between date('2014-02-05 16:15:24') and date('2014-02-06 16:15:24')
Group by index_data.host_name;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.