按时间窗口查询Postgres sql

时间:2014-09-01 18:47:56

标签: sql postgresql

我有一个表“meterreading”,其中包含列:“timestamp”,“value”,“meterId”。我希望得到每个小时开始特定时间的“价值”的总和...到目前为止,我已经提出了这个查询,但它是错误的说我需要按时间戳分组。时间戳只是表示unix纪元时间戳的整数。

select date_trunc('hour', to_timestamp(timestamp)) as hours, sum(value)
              from meterreading
              WHERE timestamp >= 1377993600 AND timestamp < 1409595081
              group by date_trunc('hours', to_timestamp(timestamp))
              order by date_trunc('hours', to_timestamp(timestamp)) asc

1 个答案:

答案 0 :(得分:0)

select date_trunc('hour', to_timestamp(timestamp)) as hours, sum(value)
from meterreading
WHERE timestamp >= 1377993600 AND timestamp < 1409595081
group by 1
order by 1

或使用选择列表中使用的完全相同的表达式

group by date_trunc('hour', to_timestamp(timestamp));

请注意'hour'而不是'hours'。因此,group by中数字参考语法的便利性。它更清晰,更不容易出错。