请求编写SQL查询按指定早间/晚间时段统计数据
按指定时段汇总统计数据的SQL实现
需求说明
需从data表中按以下两个时段汇总数据计数:
- 早间:7:30 至 19:30
- 晚间:19:30 至次日7:30
原查询按小时分组统计,现需调整为按上述两个时段分组汇总。
表结构
Tablename: data ---------------- created_date services_name id 28-08-2022 18:54 KANE 1 28-08-2022 19:00 BAPLO 2 28-08-2022 23:22 BAPLO 3 28-08-2022 23:40 VLOTLS 4 29-08-2022 00:02 DELLP 5 29-08-2022 00:42 SECON 6 29-08-2022 02:00 BAPLO 7 29-08-2022 03:00 PRODC 8 29-08-2022 05:14 DELLP 9 29-08-2022 05:30 SECON 10 29-08-2022 05:42 SECON 11
现有查询语句
SELECT CONCAT( HOUR(created_date), ' to ', CONCAT( HOUR(created_date), ':59:59' ) ) as time_frame, COUNT(*) FROM data GROUP BY DATE(created_date), HOUR(created_date) ORDER BY DATE(created_date), HOUR(created_date)
现有查询结果
0 to 0:59:59 2 2 to 2:59:59 1 3 to 3:59:59 1 5 to 5:59:59 3 18 to 18:59:59 1 19 to 19:59:59 1 23 to 23:59:59 2
解决方案SQL语句
SELECT CASE WHEN TIME(created_date) BETWEEN '07:30:00' AND '19:29:59' THEN '早间(7:30至19:30)' ELSE '晚间(19:30至次日7:30)' END AS time_period, COUNT(*) AS count FROM data GROUP BY time_period ORDER BY count;
语句说明
- 利用
TIME(created_date)提取字段的时间部分,通过BETWEEN判断是否属于早间时段(设置19:29:59为早间结束边界,确保19:30及之后的时间被归入晚间) - 通过
CASE语句将每条记录映射到对应的时段分组,最终按时段汇总计数
期望查询结果
早间(7:30至19:30) 2 晚间(19:30至次日7:30) 9
内容的提问来源于stack exchange,提问作者SRash
相关产品推荐
相关产品推荐

