MySQL 按不同主机名和最新日期对列求和

MySQL 按不同主机名和最新日期对列求和

我有一张如下所示的表格:

 DATE       | HOSTNAME | MY_VALUE
 -----------+----------+----------
 2015-08-10 | host01   | 1
 2015-08-10 | host02   | 3
 2015-08-10 | host03   | 4
 2015-08-11 | host01   | 7
 2015-08-12 | host02   | 13 

我想按最近日期计算MY_VALUE每个不同项的最后一个值的总和。输出应为“ ”(4+7+13)。hostname24

SELECT sum(MY_VALUE) 
FROM my_table  

答案1

我认为您可以使用这样的查询:

SELECT SUM(My_Value)
FROM Table1 t
WHERE t.`Date` = (
  SELECT Max(ti.`Date`)
  FROM Table1 ti
  WHERE t.`HostName` = ti.`HostName`);

[SQL Fiddle 演示]

答案2

当您说最近的日期时,这意味着您只需要一条记录主机名。您可以使用行号分析函数。

select sum(myvalue),hostname 
select hostname,date,myvalue,row_number() over (partition by hostname order by date) as n 
from table ) 
where n=1

如果你仍然没有得到答复。请解释一下你的需求

相关内容