MySQL统计visitor表各时段访客数 按00-01至23时段分组展示
统计visitor表各小时段访客数量的解决方案
没问题,我来帮你搞定这个统计需求!首先我们需要从date字段里提取小时信息,再按照你要求的时段规则(00-01对应01时段,以此类推)分组统计访客数。
实现SQL语句
这里用MySQL的HOUR()函数提取时间的小时部分,通过计算得到对应时段编号,最后分组统计:
SELECT (HOUR(date) + 1) AS 时段编号, CONCAT(LPAD(HOUR(date), 2, '0'), '-', LPAD(HOUR(date)+1, 2, '0')) AS 时段区间, COUNT(id) AS 访客数量 FROM visitor GROUP BY HOUR(date) ORDER BY 时段编号;
统计结果表格
根据你提供的测试数据,执行上述SQL后会得到如下结果:
| 时段编号 | 时段区间 | 访客数量 |
|---|---|---|
| 1 | 00-01 | 1 |
| 2 | 01-02 | 1 |
| 3 | 02-03 | 2 |
| 4 | 03-04 | 1 |
| 5 | 04-05 | 1 |
补充说明
- 用
LPAD()函数是为了让小时数保持两位格式(比如显示00而非0),让时段区间看起来更规范; - 如果你的数据中存在23点的记录,默认逻辑会生成24时段对应
23-24区间。如果希望23点对应23时段,可以把时段编号的逻辑调整为CASE WHEN HOUR(date)=23 THEN 23 ELSE HOUR(date)+1 END,按需选择即可。
内容的提问来源于stack exchange,提问作者aback
相关产品推荐
相关产品推荐

