我有一个包含三个表Customer
,Order
和OrderType
的MySQL数据库,订单类型为在线或电话。
我需要按订单类型计算每个客户的订单百分比。
CUSTOMER
id
name
ORDER
id
customer_id
ordertype_id
ORDERTYPE
id
name
理想情况下,结果应为:
CUSTOMER | ONLINE | PHONE
name 20% 80%
name 45% 55%
答案 0 :(得分:3)
您可以使用条件聚合:
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;
如果需要客户名称而不是ID,则可以添加附加join
。