【问题标题】:PostgreSQL / TimescaleDB query that group data by custom intervalPostgreSQL / TimescaleDB 查询按自定义间隔分组数据
【发布时间】:2020-11-23 13:49:11
【问题描述】:

我有一个有效的查询,可以让我每天对 value 字段求和。

SELECT sum(value) as sum_value, to_char(time::date,'DD-MM-YY') as day 
FROM "measures"  
GROUP BY "day" 
ORDER BY "day" asc

是否可以进行相同的查询,但不是按天分组,而是按 2 天分组,或按特定持续时间(仅天数,而不是小时数)分组

【问题讨论】:

标签: postgresql group-by timescaledb dateinterval


【解决方案1】:

您可以使用@Mike Organek 评论的timescaledb 扩展time_bucket() 函数或使用本机PosgreSQL 数据转换,如:

SELECT 
    sum(value) as sum_value, 
    to_char(time::date,'DD-MM-YY') as day,
    floor(extract(epoch from "time")/(60*60*24*2)) as time_bucket
FROM "measures"  
GROUP BY "time_bucket" 
ORDER BY "day" asc;

在上面的查询中,我们从 datetime 列中提取 unixtime,将其划分为以秒为单位的分组时间段(60*60*24*2 - 表示 2 天或 48 小时),然后按语句将其四舍五入到分组中

【讨论】:

  • 一般情况下,建议尽可能使用 time_bucket。它可以满足您的需求,并且某些计划优化和其他功能可以很好地与time_bucket 配合使用,但不能与其他一些详细的方法一起使用。 (这里是时间尺度的人)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 2019-06-28
  • 1970-01-01
  • 2021-04-29
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多