首页 > 解决方案 > MySQL计算每个客户的在线订单与电话订单的百分比

问题描述

我有一个 MySQL 数据库,其中包含三个表Customer,OrderOrderType订单类型是在线或电话。

我需要按订单类型计算每个客户的订单百分比。

CUSTOMER
id
name

ORDER
id
customer_id
ordertype_id

ORDERTYPE
id
name

理想情况下,结果将是:

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

标签: mysqlsqldatabase

解决方案


您可以使用条件聚合:

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如果您想要客户名称而不是 id,您可以添加一个附加项。


推荐阅读