SQL查询将最近7天的数据计数转换为24小时格式



我正在尝试计算过去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-2432道明>24 - 489abc48 - 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;