Мне нужно показать отчет по количеству часовых продаж пяти лучших продуктов за весь день
Следующий мой запрос
Select count(*) as SALES_COUNT,
PT.name,
EXTRACT(HOUR FROM T.created) as hour
FROM PRODUCT_TBL P INNER JOIN TRANSACTION_TBL T on T.PID = P.ID
WHERE T.created <= '2018-05-22 23:50:58'
AND T.created >= '2018-05-22 00:00:00'
AND P.ID IN (Select P.PID
FROM PRODUCT_TBL P
INNER JOIN TRANSACTION_TBL T on T.PID = P.ID
WHERE T.created <= '2018-05-22 23:50:58'
AND T.created >= '2018-05-22 00:00:00'
GROUP BY PT.ID,
order by COUNT(*) desc LIMIT 5)
GROUP BY PT.name,
hour
ORDER BY hour asc,
TRANSACTION_COUNT
Но это сгенерирует ежедневную пятерку, мне нужна почасовая пятерка лучших.
Пример данных
Transaction_TBL
ID PID AMOUNT Created Modified
1 1 35 2018-05-22 16:30:58 2018-05-22 16:30:58
2 1 35 2018-05-22 16:30:60 2018-05-22 16:30:60
3 1 35 2018-05-22 16:31:60 2018-05-22 16:31:60
4 1 35 2018-05-22 16:40:58 2018-05-22 16:40:58
----------
5 2 10 2018-05-22 16:15:58 2018-05-22 16:15:58
6 2 10 2018-05-22 16:15:58 2018-05-22 16:15:58
7 2 10 2018-05-22 16:15:58 2018-05-22 16:15:58
----------
8 3 05 2018-05-22 16:45:58 2018-05-22 16:45:58
----------
----------
9 5 135 2018-05-22 18:01:58 2018-05-22 18:01:58
10 5 135 2018-05-22 18:01:58 2018-05-22 18:01:58
----------
6 7 110 2018-05-22 18:45:58 2018-05-22 18:45:58
----------
7 1 15 2018-05-22 18:59:58 2018-05-22 18:59:58
----------
----------
8 4 15 2018-05-23 01:10:58 2018-05-23 01:10:58
9 5 15 2018-05-23 12:15:58 2018-05-23 12:15:58
PRODUCT TBL
ID NAME
1 P1
2 P2
3 P3
4 P4
5 P5
6 P6
7 P7
8 P8
Ожидаемый результат
Product SALES_COUNT HOUR
P1 04 16
----------
P2 03 16
----------
P3 01 16
----------
P5 02 18
----------
P7 110 18
----------
P1 01 18
Как мне этого добиться