#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. Спасибо! Я добавил дополнительное соединение, и теперь у меня есть то, что мне было нужно. Мы высоко ценим ваше время и помощь!