Мне нужен запрос, который показывает все дни определенного периода (например, с 01/01/2017 по 12/01/2017), а затем для каждого день Мне нужно показать количество строк, вставленных в этот день, сгруппированных клиентом, который его вставил.Показать все даты в диапазоне и показать количество строк в этот день
Так, например, у меня есть эта таблица:
+------------+------------+-----------+
| customerId | Date | Message |
+------------+------------+-----------+
| 1 | 01/01/2017 | Message 1 |
| 1 | 01/01/2017 | Message 2 |
| 1 | 01/01/2017 | Message 3 |
| 2 | 01/01/2017 | Message 1 |
| 2 | 01/01/2017 | Message 2 |
| 1 | 02/01/2017 | Message 3 |
| 1 | 02/01/2017 | Message 4 |
| 2 | 03/01/2017 | Message 3 |
+------------+------------+-----------+
Результат должен быть таким:
+------------+------------+----------+
| Date | customerId | messages |
+------------+------------+----------+
| 01/01/2017 | 1 | 3 |
| 01/01/2017 | 2 | 2 |
| 02/01/2017 | 1 | 2 |
| 02/01/2017 | 2 | 0 |
| 03/01/2017 | 1 | 0 |
| 03/01/2017 | 2 | 1 |
+------------+------------+----------+
У меня уже есть этот запрос:
SELECT TRUNC (SYSDATE + ROWNUM, 'DD') as dt
FROM DUAL CONNECT BY ROWNUM < 12
что дает мне таблица с диапазоном дат для x количество дней (в этом случае 12). Я уже пытался подключиться к своей таблице с этой таблицей DUAL (LEFT JOIN и JOIN), но это не дает мне результата, который мне нужен.
Редактировать: Я только что нашел, что могу использовать CROSS JOIN
, чтобы показать все даты.
я удалил MySQL тег, как синтаксис выглядит как Oracle. –
О да, простите, это было предложено. –
Я только что узнал, что мне, вероятно, нужен «CROSS JOIN» –