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

Foa*_*ebi 6 sql postgresql

我有一个带有时间戳字段和使用字段的表,如下所示

            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
 ...
Run Code Online (Sandbox Code Playgroud)

我想以“30 分钟”的间隔获得“1 周”的使用总和。我只能获取以分钟、小时、天为单位的数据......

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

如何获取诸如“5 分钟”、“30 分钟”、“2 天”和...等间隔的数据。

Mat*_*att 8

使用以下内容来获得您的追求。

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)
Run Code Online (Sandbox Code Playgroud)