Postgresql平均值和分组依据

时间:2018-06-12 13:43:08

标签: database postgresql timestamp

所以我有一个带有列ID(INTEGER),温度(REAL)和一次(TIMESTAMP)的表,我希望按小时计算平均温度,但我无法解决它。

对于带

的样本
 temperature |        time      
-------------+---------------------
       21.88 | 2018-06-01 07:30:00
       23.21 | 2018-06-01 07:45:00
       23.57 | 2018-06-01 08:15:00
       24.91 | 2018-06-01 08:30:00
        25.5 | 2018-06-01 08:45:00
       25.98 | 2018-06-01 09:00:00
             | 2018-06-01 09:30:00
       24.45 | 2018-06-01 09:45:00
             | 2018-06-01 10:00:00

请求:

SELECT DISTINCT ON(DATE_PART('hour',time)) time, avg(temperature) 
FROM Measure GROUP BY time , DATE_PART('hour',time);

我明白了:

        time         |       avg        
---------------------+------------------
 2018-06-01 07:30:00 | 21.8799991607666
 2018-06-01 08:15:00 | 23.5699996948242
 2018-06-01 09:00:00 | 25.9799995422363

这里发生了一些事情,但这不是一般的......

解决:

感谢评论,我得到了一些正确的查询:

SELECT DISTINCT ON(DATE_TRUNC('hour',time)) DATE_TRUNC('hour',time), avg(temperature) 
FROM Measure GROUP BY DATE_TRUNC('hour',time), DATE_TRUNC('day',time);

0 个答案:

没有答案