Количество заказов каждого клиента в каждом месяце года в MySQL - PullRequest
0 голосов
/ 21 марта 2019

У меня есть 3 таблицы в MySQL, одна из которых имеет клиентов

______________
customers     | 
______________|
id | name     |
______________|
1  | John     |
2  | Wick     |
______________

Затем 2 таблицы заказов, каждая из которых

______________________________________
call_order
______________________________________
id | customer_id | created_at
______________________________________
1  | 1           | 2019-02-19 15:07:48
2  | 2           | 2019-03-19 15:07:48
3  | 1           | 2019-02-19 15:07:48

и таблица второго порядка

______________________________________
direct_order
______________________________________
id | customer_id | created_at
______________________________________
1  | 2           | 2019-02-19 15:07:48
2  | 1           | 2019-03-19 15:07:48
3  | 1           | 2019-02-19 15:07:48

То, чего я хочу достичь, это

____________________________________________
customer | Jan | Feb | Mar | Apr ... | Total
____________________________________________
John     |  0  |  3  |  1  |  0      |  4
Wick     |  0  |  1  |  1  |  0      |  2

Я хочу сделать запрос таким образом, чтобы я получал записи о каждом клиенте в каждом месяце года, которые должны быть заказаны по итогу. Это означает, что клиент с наибольшим количеством должен быть на вершине.

1 Ответ

2 голосов
/ 21 марта 2019

Можно использовать union all и условную агрегацию. Как то так:

select c.name,
       sum( month(created_at) = 1 ) as Jan,
       sum( month(created_at) = 2 ) as Feb,
       . . .
       sum( month(created_at) = 12 ) as Dec,
       count(*) as total
from customers c join
     ((select customer_id, created_at
       from call_orders
      ) union all
      (select customer_id, created_at
       from direct_orders
      ) 
     ) o
     on o.customer_id = c.id
group by c.name
order by total desc;

Полагаю, вы также хотите установить ограничения на год, поэтому заказы поступают из одного и того же месяца, а не из одного и того же месяца в нескольких годах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...