PostgreSQL/TimescaleDB按自定义间隔对数据进行分组的查询
我有一个工作查询,允许我每天对PostgreSQL/TimescaleDB按自定义间隔对数据进行分组的查询,postgresql,group-by,timescaledb,dateinterval,Postgresql,Group By,Timescaledb,Dateinterval,我有一个工作查询,允许我每天对值字段求和 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天分组或按特定的持续时间(仅限天而非小时)您可以使用@Mike Organek评论的timescaled
值
字段求和
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天分组或按特定的持续时间(仅限天而非小时)您可以使用@Mike Organek评论的
timescaledb
扩展time\u 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小时),并将其四舍五入,然后按语句分组使用您可以使用
timescaledb
扩展time\u bucket()
作为@Mike Organek注释的函数或使用本机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小时),并将其取整为group by语句use
time\u bucket()
usetime\u bucket()
通常,建议尽可能使用time\u bucket。它可以满足您的需求,一些规划优化和其他功能将与时间桶
配合使用,但其他一些方法无法满足您的需求。(此处的时间刻度人员)一般来说,如果可能,建议使用时间刻度。它可以满足您的需求,一些规划优化和其他功能将与时间桶
配合使用,但其他一些方法无法满足您的需求。(这里的时间刻度)