У меня есть такая база данных (стандартизованная, упрощенная для описания проблемы):
BOOKS:
ID (PK) | TITLE | AUTHOR | ...
--------|-------|--------|-----
0 | Title_1 | Author_1
1 | Title_2 | Author_1
2 | Title_3 | Author_2
3 | Title_3 | Author_3
ORDERs:
ID | BOOK_ID | USER_ID | ORDER_DATE | ...
---|---------|---------|------------|----
0 | 1 | 1 | 2020-04-10 |
1 | 2 | 2 | 2020-04-15 |
2 | 2 | 1 | 2020-04-26 |
3 | 2 | 1 | 2020-05-02 |
Я хочу добиться чего-то вроде этого
RESULT:
BOOK | Num_All_Time_Orders | Num_Orders_April | Num_Orders_May
Как и просили: https://www.db-fiddle.com/f/e1gW7aVEh3Gh547nZHvaDA/0
В основном подсчитывайте все заказы для каждой книги. Часть «За все время» была довольно простой, но я пытаюсь получить представление «для всех» временных интервалов.
Возможно ли это (простым способом) или мне следует выполнять последующие запросы с другими параметрами?
Текущий запрос для NumAllTime выглядит примерно так:
SELECT BOOK.ID , COUNT(ORDERS.BOOK_ID)
FROM BOOKS AS BOOK
LEFT JOIN ORDERS ON BOOK.ID = ORDERS.BOOK_ID
GROUP BY BOOK.ID
EDIT: Спасибо за немедленные комментарии. Отредактировал кое-что.