У меня есть таблица в базе данных Oracle, которая содержит действия, выполняемые пользователями в одной из наших систем.Он используется для статистического анализа, и мне нужно отобразить количество действий, выполненных за указанную дату, сгруппированных по часам дня.
У меня есть запрос, который делает это нормально, однако он не отображает часыдня, которые не содержат действий (очевидно, потому что нет записей для отображения за этот час).
Например, запрос:
SELECT TO_CHAR(event_date, 'HH24') AS during_hour,
COUNT(*)
FROM user_activity
WHERE event_date BETWEEN to_date('15-JUN-2010 14:00:00', 'DD-MON-YYYY HH24:MI:SS')
AND to_date('16-JUN-2010 13:59:59', 'DD-MON-YYYY HH24:MI:SS')
AND event = 'user.login'
GROUP BY TO_CHAR(event_date, 'HH24')
ORDER BY during_hour;
(Не обращайте внимания на нечетное началои даты окончания, они похожи на это, потому что они в GMT, а я GMT + 10 - но это отдельная проблема, если только она не влияет на возможность ответить на этот вопрос)
Это дает набор результатов:
DURING_HOUR COUNT(*)
---------------------- ----------------------
00 12
01 30
02 18
03 20
04 12
05 24
06 20
07 4
23 8
9 rows selected
Как изменить этот запрос, чтобы отображать часы дня, которые содержат 0 событий?
Я искал переполнение стека и нашел несколько похожих вопросов, но не тот, который отвечает на мою конкретную проблему.
Ваша помощь приветствуется.