加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – Postgres按时间戳分组为6小时桶

发布时间:2020-12-12 06:39:17 所属栏目:MsSql教程 来源:网络整理
导读:我有以下简单表: ID TIMESTAMP VALUE4 2011-05-27 15:50:04 12535 2011-05-27 15:55:02 13046 2011-05-27 16:00:02 13227 2011-05-27 16:05:01 1364 我想平均VALUES,并将每个TIMESTAMP日分为6小时桶.例如00:00至06:00,06:00至12:00,12:00至18:00 18:00至00
我有以下简单表:
ID      TIMESTAMP               VALUE
4   2011-05-27 15:50:04 1253
5   2011-05-27 15:55:02 1304
6   2011-05-27 16:00:02 1322
7   2011-05-27 16:05:01 1364

我想平均VALUES,并将每个TIMESTAMP日分为6小时桶.例如00:00至06:00,06:00至12:00,12:00至18:00& 18:00至00:00

我能按年,月,日分组.小时使用以下查询:

select avg(VALUE),EXTRACT(year from TIMESTAMP) AS year,EXTRACT(month from TIMESTAMP) AS month,EXTRACT(day from TIMESTAMP) as day
    from TABLE
      group by year,month,day

但我无法按照上面的定义将每一天分为4个时段,我们非常欢迎任何帮助.

解决方法

我认为分组(时间戳/ 6的小时)商的整数值应该有所帮助.试试吧,看看它是否有帮助.
你的小组应该是这样的
group by year,day,trunc(EXTRACT(hour from TIMESTAMP) / 6)

这背后的逻辑是,当日期的小时部分除以6时,int值只能是

0 - 0:00 - 5:59:59
    1 - 6:00 - 11:59:59
    2 - 12:00 - 17:59:59
    3 - 18:00 - 23:59:59

使用此分组应该将您的数据每天分成4组,这正是您所需要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读