首页 > 解决方案 > 我想要按时隙 postgres 分组的记录计数

问题描述

假设我在表中有在 DateTime 列创建的记录。然后我希望结果看起来像

time window |  count
9am-3pm     |  9
3pm-6pm     |  12

其中 time window 是时间,如果在此时间之间创建了记录,则 count 是一个数字。

标签: postgresql

解决方案


您可以尝试使用CASE WHENwithdate_part功能GROUP BY

查询 1

SELECT CASE WHEN date_part('hour',dt) BETWEEN 3 AND 15 THEN '9am-3pm'
            WHEN date_part('hour',dt) BETWEEN 15 AND 18 THEN '3pm-6pm' END "time window",
      COUNT(*)
FROM T
GROUP BY  CASE WHEN date_part('hour',dt) BETWEEN 3 AND 15 THEN '9am-3pm'
            WHEN date_part('hour',dt) BETWEEN 15 AND 18 THEN '3pm-6pm' END

结果

| time window | count |
|-------------|-------|
|     3pm-6pm |     1 |
|     9am-3pm |     1 |

推荐阅读