我有一个表“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
答案 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
中数字参考语法的便利性。它更清晰,更不容易出错。