Reputation: 5713
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,
Upvotes: 0
Views: 88
Reputation: 2898
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;
Upvotes: 1