这是一张表格,查询运行的时间,即现在是2010-07-30 22:41:14

number | person | timestamp
45       mike     2008-02-15 15:31:14
56       mike     2008-02-15 15:30:56
67       mike     2008-02-17 13:31:14
34       mike     2010-07-30 22:31:14
56       bob      2009-07-30 22:37:14
67       bob      2009-07-30 22:37:14
22       tom      2010-07-30 22:37:14
78       fred     2010-07-30 22:37:14


想要一个可以将每个人的人数加起来的查询。然后仅显示最近60分钟内最近输入的名称总数。困难似乎是,尽管可以使用AND timestamp> now()-INTERVAL 600,但这会导致停止数字的总和。

我从上面得到的结果是

Mike 202
tom  22
fred 78


鲍勃没有被包括在内,他的最新作品还不到一岁!迈克(Mike)虽然有几个旧条目是有效的,因为他最近有一个条目-但是密钥,它仍然会累加他的完整“数字”,而不仅是带有时间段的数字。

继续在单个查询中解决这个问题!谢谢

安迪

最佳答案

您需要一个HAVING子句:

select name, sum(number), max(timestamp_column)
from table
group by name
HAVING max( timestamp_column) > now( ) - INTERVAL 600;

关于datetime - mySql对一列求和,并且仅返回最近10分钟内具有和条目的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3375568/

10-16 13:33