MySQL рассчитывает процент онлайн-заказов по телефону для каждого клиента - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть MySQL DB с тремя таблицами Customer, Order и OrderType, где тип заказа онлайн или по телефону.

Мне нужно рассчитать процент заказов каждого клиента потип заказа.

CUSTOMER
id
name

ORDER
id
customer_id
ordertype_id

ORDERTYPE
id
name

В идеале, результаты будут иметь:

CUSTOMER   |    ONLINE     |    PHONE
name             20%             80%
name             45%             55%

1 Ответ

3 голосов
/ 15 апреля 2019

Вы можете использовать условное агрегирование:

select o.customer_id,
       100 * avg( ot.name = 'ONLINE' ) as online_percent,
       100 * avg( ot.name = 'PHONE' ) as phone_percent
from orders o join
     ordertype ot
     on o.ordertype_id = ot.id
group by o.customer_id;

Вы можете добавить дополнение join, если хотите указать имя клиента вместо идентификатора.

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