按日期和特定时间分组

Posted

技术标签:

【中文标题】按日期和特定时间分组【英文标题】:Group By Date with specific hours 【发布时间】:2014-11-19 16:15:55 【问题描述】:

我想根据日期对这组数据执行group by,但将23:0022:59 作为开始时间和结束时间。

例如,对于这些数据:

2014-11-05 23:04:58.0
2014-11-05 23:23:03.0
2014-11-05 23:51:54.0
2014-11-05 23:54:29.0
2014-11-05 23:58:14.0
2014-11-06 06:13:23.0
2014-11-06 06:29:58.0
2014-11-06 06:58:27.0
2014-11-06 08:21:56.0
2014-11-06 08:24:01.0
2014-11-06 23:13:47.0
2014-11-06 23:27:55.0
2014-11-06 23:30:34.0
2014-11-06 23:40:52.0
2014-11-06 23:58:53.0
2014-11-07 06:00:37.0
2014-11-07 06:23:47.0
2014-11-07 06:28:27.0
2014-11-07 06:44:13.0

我期待这样的事情:

Count | Date
-------------------
10    | 2014-11-06
9     | 2014-11-07

【问题讨论】:

Postgres group by timestamp into 6 hourly buckets的可能重复 【参考方案1】:

您可以通过在日期上加一小时来获得此聚合:

select date(timestamp + interval '1' hour) as thedate, count(*)
from table t
group by date(timestamp + interval '1' hour);

【讨论】:

【参考方案2】:

您可以使用 EXTRACT 函数返回小时和分组。例如:

SELECT COUNT(date), date
from tableName
group by EXTRACT(hour from Date)

欲了解更多信息,请参阅here

【讨论】:

以上是关于按日期和特定时间分组的主要内容,如果未能解决你的问题,请参考以下文章

如何按特定日期范围(例如小时、日、月)对数据进行分组?

在 LINQ 中按特定列分组 [重复]

按 ID 和结果分组,取特定结果的最早日期并分配数字(即结果 1、结果 2)

在mysql和php中按日期范围分组

MDX 查询以对具有特定日期范围的日期维度进行分组

在python中按特定年份对数据进行分组