Необходимо определить среднее количество обработанных сообщений абонентом за 10 секунд в течение часа. PLSQL Есть столбцы: подписчик, дата ('dd.mm.yyyy hh.mm.ss') и сообщения, они связаны (у каждого сообщения есть свое время и подписчик, который его обработал).
theИдея заключалась в следующем:
SELECT subscriber, HH24, AVG(CNT) FROM (
SELECT subscriber,
trunc(date, 'HH24') HH24,
trunc(date - INTERVAL '10' SECOND) SS,
count(messages) CNT
FROM tables
where date IS NOT NULL
GROUP BY subscriber,
trunc(date, 'HH24'),
trunc(date - INTERVAL '10' SECOND)
order by subscriber)
GROUP BY subscriber, HH24
Ожидаемый результат:
subscriber HH24 CNT
subscriber 1 01.01.01 21:00:00 8,88
subscriber 1 01.01.01 22:00:00 7,88
subscriber 2 01.01.01 21:00:00 6,66
subscriber 3 01.01.01 22:00:00 5,54
Мой запрос производит что-то вроде следующего:
subscriber HH24 CNT
subscriber 1 01.01.01 21:00:00 400
subscriber 1 01.01.01 22:00:00 500
subscriber 2 01.01.01 21:00:00 300
subscriber 3 01.01.01 22:00:00 500
Скорее всего, мой запрос не группируетданные за 10 секунд, подскажите где я ошибся? Спасибо!