我正在记录已发送到我的 API 的查询,如下所示:
id | timestamp
----+---------------------
1 | 2015-01-19 18:01:47
2 | 2015-01-19 20:41:37
3 | 2015-01-20 14:15:06
4 | 2015-01-21 13:02:51
5 | 2015-01-23 05:02:12
现在,我需要知道在过去 60 分钟、24 小时和 30 天内进行了多少查询,并将其分组:
HOURLY | DAILY | MONTHLY
-------+-------+--------
0 | 1 | 5
这可以在一次查询中完成吗?
编辑:
我已经使用了这里的建议,并尝试了一些符合逻辑的事情,直到它按照我想要的方式工作。
SELECT SUM(CASE WHEN DATE_SUB(NOW(), interval 1 HOUR) <= `TIMESTAMP` THEN 1 ELSE 0 END) HOURLY,
SUM(CASE WHEN DATE_SUB(NOW(), interval 1 DAY) <= `TIMESTAMP` THEN 1 ELSE 0 END) DAILY,
SUM(CASE WHEN DATE_SUB(NOW(), interval 1 MONTH) <= `TIMESTAMP` THEN 1 ELSE 0 END) MONTHLY
FROM `REQUESTS`;
非常感谢您的帮助!
最佳答案
select sum(case when timestamp between now() - interval 1 hour and now() then 1 else 0) hourly,
sum(case when timestamp between now() - interval 1 day and now() then 1 else 0) daily,
sum(case when timestamp between now() - interval 1 month and now() then 1 else 0) monthly
from your_table
编辑...
关于mysql - 如何通过一次查询获取上一小时、上一天和上个月的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28111956/