我正在尝试计算过去24小时内的记录计数,然后是24至48小时和48至72小时,等等,直到120小时。
我写了这个查询,但它只能获取1天的详细信息:
SELECT *
FROM table_name
WHERE table_name.UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 24 HOUR)
GROUP BY table_column
我需要这样的结果:
<表类>数 列时间 tbody><<tr>10道明> 0-24 32道明> 24 - 48 9 abc 48 - 72 表类>
您可以使用case语句如下(这适用于MySQL):
select count(your_column_name) as cnt,
case
when UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 24 HOUR) then '0-24'
when UPDATED_TIME < DATE_SUB(CURDATE(), INTERVAL 24 HOUR) and UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 48 HOUR) then '24-48'
when UPDATED_TIME < DATE_SUB(CURDATE(), INTERVAL 48 HOUR) and UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 72 HOUR) then '48-72'
end as time
from table_name
group by time;
。如果只有像2022-06-24
这样的日期格式,则使用CURDATE(),否则使用NOW();.
如果您有其他日期范围,您可以添加另一个条件else 72+
。
select count(your_column_name) as cnt,
case
when UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 24 HOUR) then '0-24'
when UPDATED_TIME < DATE_SUB(CURDATE(), INTERVAL 24 HOUR) and UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 48 HOUR) then '24-48'
when UPDATED_TIME < DATE_SUB(CURDATE(), INTERVAL 48 HOUR) and UPDATED_TIME > DATE_SUB(CURDATE(), INTERVAL 72 HOUR) then '48-72'
else '72+'
end as time
from table_name
group by time;