这是一张表格,查询运行的时间,即现在是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/