简体   繁体   English

如何在PostgreSQL中按时间间隔选择行?

[英]How to select rows by time interval in PostgreSQL?

I have a table with timestamp field and usage field like this 我有一个表格,其中包含时间戳字段和使用字段

            timestamp  | usage
'2015-06-13 13:45:58'  | 240
'2015-06-13 13:45:59'  | 480
'2015-06-13 13:46:00'  | 240
'2015-06-13 13:46:01'  | 320
 ...

I want to get sum of usage for a period of '1 week' with '30 minutes' interval. 我希望获得一段时间“1周”和“30分钟”间隔的使用总和。 I can get data only for intervals in minute, hour, day and ... 我只能以分钟,小时,天和...的间隔获取数据。

SELECT date_trunc('minute', timestamp) as clock, sum(usage)
FROM my_table
WHERE timestamp > localtimestamp - INTERVAL '1 week'
GROUP BY clock

how to get data for intervals like '5 minutes', '30 minutes', '2 days' and ... . 如何获取“5分钟”,“30分钟”,“2天”等间隔的数据。

Use the following to get what your after. 使用以下内容获取您的后续内容。

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + INTERVAL '1 second' * round((extract('epoch' FROM timestamp) / 1800) * 1800) AS clock,  SUM(usage)
FROM my_table 
WHERE timestamp > localtimestamp - INTERVAL '1 week'
GROUP BY round(extract('epoch' FROM timestamp) / 1800)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM