如何对PostgreSQL二维码扫描查询结果按整体时段进一步分组?
解决PostgreSQL统计整体二维码扫描高峰时段的问题
原查询按具体日期+小时的完整时间戳分组,导致同一小时(如01:00)不同日期的扫描数据被拆分统计。要得到整体高峰时段,需按小时字段单独分组,累加所有日期中同一小时的扫描总数。
修改后的查询语句
SELECT EXTRACT(HOUR FROM created_at) AS scan_hour, COUNT(*) AS total_scans FROM code_scans GROUP BY scan_hour ORDER BY total_scans DESC;
结果说明
基于你提供的示例数据,执行上述查询后会得到如下结果:
| scan_hour | total_scans |
|---|---|
| 1 | 7 |
| 0 | 4 |
| 18 | 2 |
直接就能看出01:00是整体扫描高峰时段。
关键逻辑解释
- 用
EXTRACT(HOUR FROM created_at)提取时间中的小时部分(返回0-23的整数),让所有日期的同一小时归为一组。 - 按提取出的
scan_hour分组统计总扫描数,最后按总数降序排序,顶部结果即为整体高峰时段。
内容的提问来源于stack exchange,提问作者Inventor Andy
相关产品推荐
相关产品推荐

