У меня есть таблица с отметкой времени, датчиком и количеством сообщений за 15 минут, и я хочу, чтобы это было переупорядочено.
time sensor messages
2020-04-1 02:45:00 a 12
2020-04-1 02:30:00 a 7
2020-04-1 02:15:00 a 9
2020-04-1 02:00:00 a 10
2020-04-1 03:45:00 b 3
2020-04-1 03:30:00 b 7
2020-04-1 03:15:00 b 9
2020-04-1 03:00:00 b 4
2020-04-1 03:45:00 a 12
2020-04-1 03:30:00 a 7
2020-04-1 03:15:00 a 9
2020-04-1 03:00:00 a 8
, и я хочу в качестве результата за день / за час общее количество сообщений, как в таблице ниже:
day(of the month) 0 1 2 3 4 5 .. 23
1 38 36 0 0 0 0
Это то, что я сделал в запросе postgresql:
SELECT *
FROM crosstab('SELECT
to_char(time,''DD'')::integer AS "day",
to_char(time,''HH24'')::integer AS "hour",
sum(messages)::int AS "total"
FROM test
WHERE sensor = ''a''
GROUP by to_char(time,''MM''),
day,hour,sensor')
as ct (
day integer
,hour_00 integer
,hour_01 integer
,hour_02 integer
,hour_03 integer
,hour_04 integer
,hour_05 integer
,hour_06 integer
,hour_07 integer
,hour_08 integer
,hour_09 integer
,hour_10 integer
,hour_11 integer
,hour_12 integer
,hour_13 integer
,hour_14 integer
,hour_15 integer
,hour_16 integer
,hour_17 integer
,hour_18 integer
,hour_19 integer
,hour_20 integer
,hour_21 integer
,hour_22 integer
,hour_23 integer)
Но результат не в порядке
day hour_00 hour_01 hour_02 hour_03 hour_04 ....
1 38
1 36
2 0