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

#mysql #sql #database

#mysql #sql #База данных

Вопрос:

У меня есть база данных MySQL с тремя таблицами 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:

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

 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 , если хотите указать имя клиента вместо идентификатора.

Комментарии:

1. Спасибо! Я добавил дополнительное соединение, и теперь у меня есть то, что мне было нужно. Мы высоко ценим ваше время и помощь!