Как я могу получить таблицу отсчетов, сгруппированных по месяцам по оси x и по часам по оси y в PostgreSQL? - PullRequest
0 голосов
/ 21 мая 2018

Существует таблица журнала с большим количеством событий, я хотел бы знать, что такое статистические данные, т.е. в какое время каждого месяца, сколько событий происходило.

Data sample:
 date_create         | event
---------------------+---------------------------
 2018-03-01 18:00:00 | Something happened
 2018-03-05 18:15:00 | Something else happened
 2018-03-06 19:00:00 | Something happened again
 2018-04-01 18:00:00 | and again

Результат должен выглядеть следующим образом:

 hour | 03 | 04
------+----+----
 18   |  2 |  1
 19   |  1 |  0

Я могу сделать это с помощью CTE, но каждый раз это значительная ручная работа.Я предполагаю, что это можно сделать с помощью funciton, но, вероятно, оно уже есть.

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете использовать агрегацию.Я думаю:

select extract(hour from date_create) as hh,
       sum(case when extract(month from date_create) = 3 then 1 else 0 end) as month_03,
       sum(case when extract(month from date_create) = 4 then 1 else 0 end) as month_04
from t
group by hh
order by hh;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...