Итак, у меня есть таблица с идентификатором столбца (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);