提问人:Karthick 提问时间:7/18/2023 最后编辑:Karthick 更新时间:7/19/2023 访问量:46
使用日期列表计算每小时的日期范围计数
Compute the date range count for every hour using a list of dates
问:
- 我想要 Map<String 小时数,从日期列表中计数>
- 我还按日期分组,每 1 小时计数一次
Ex In DB Value 如下所示
2023-07-18 10:10:00.000
2023-07-18 10:20:00.000
2023-07-18 11:10:00.000
2023-07-18 11:30:00.000
2023-07-18 11:35:00.000
2023-07-18 12:10:00.000
2023-07-18 12:30:00.000
我的预期结果应该如下,因为应该计算每 1 小时范围计数
地图结果
<10-11 ,2>
<11-12 ,3>
<12-13 ,2>
我尝试了论坛提供的许多示例,但不起作用。
答:
1赞
ps-
7/18/2023
#1
如果您期望在输出中出现<小时范围,计数>,以下查询可能会解决您的问题 -
SELECT group_concat(distinct CONCAT(HOUR(date_time), '-', HOUR(date_time) + 1)) AS hour_range, COUNT(date_time) AS count
FROM your_table
GROUP BY HOUR(date_time)
ORDER BY HOUR(date_time);
评论
0赞
Karthick
7/18/2023
选择 group_concat(distinct CONCAT(HOUR(INCIDENT_TIMESTAMP_), '-', HOUR(INCIDENT_TIMESTAMP_) + 1)) 作为 hour_range, COUNT(INCIDENT_TIMESTAMP_) 作为 COUNT FROM act_ru_incident 其中 INCIDENT_TIMESTAMP_ > NOW() - 间隔 8 小时,PROC_DEF_ID_ = 'SOMECONTION' GROUP BY HOUR(INCIDENT_TIMESTAMP_) ORDER BY HOUR(INCIDENT_TIMESTAMP_);要获取过去 8 小时的记录,以上就可以了,对吧?@ps-
0赞
ps-
7/19/2023
对不起,回复晚了。是的,此查询应该在过去 8 小时内有效。唯一的建议是,您按小时(<字段>)分组,我猜您的假设是您的数据只有一天。如果您想查看多天的数据,这将在日期之间混淆您的每小时数据。相反,您应该使用 date_format(date_time, '%Y%m%d%h') 或类似的东西对数据进行分组。这将帮助您查看不同日期的准确数据。
0赞
Karthick
7/19/2023
谢谢 ps- 截至目前,我们只需要一天的数据 例如,如果日期是 2023-07-19 10:01:01.000,那么它应该返回前一天的记录,因为我们正在尝试获取过去 8 小时的数据我需要在哪里使用 date_format(date_time, '%Y%m%d%h') ps ?
0赞
ps-
7/19/2023
24 小时时间倒退应该不会造成任何问题。除此之外,我应该使用 date_format() 是我推荐的。
评论