У меня есть таблица логинов в следующей (упрощенной) структуре:
id | login_time
---------
1 | 2019-02-04 18:14:30.026361+00
2 | 2019-02-04 22:10:19.720065+00
3 | 2019-02-06 15:51:53.799014+00
Теперь я хочу сгенерировать диаграмму следующим образом:
https://prnt.sc/mifz6y
В основномЯ хочу показать логины за последние 48 часов.
Мой текущий запрос:
SELECT count(*), date_trunc('hour', login_time) as time_trunced FROM user_logins
WHERE login_time > now() - interval '48' hour
GROUP BY time_trunced
ORDER BY time_trunced DESC
Это работает, если есть записи для каждого часа.Однако, если в течение часа не будет входов, не будет выбранная запись, например:
time_trunced | count
---------------------
12:00 | 1
13:00 | 2
15:00 | 3
16:00 | 5
Мне потребуется непрерывный запрос, чтобы я мог просто поместить значения счетчика в массив:
time_trunced | count
---------------------
12:00 | 1
13:00 | 2
14:00 | 0 <-- This is missing
15:00 | 3
16:00 | 5
Исходя из этого, я могу просто преобразовать результат запроса в массив типа [1, 2, 0, 3, 5]
и передать его моему внешнему интерфейсу.
Возможно ли это с postgresql? Или мне нужно реализовать собственную логику?