mysql - MySQL计算每个客户的在线订单与电话订单的百分比
问题描述
我有一个 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%
解决方案
您可以使用条件聚合:
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,您可以添加一个附加项。
推荐阅读
- python - 多阶段 Dockerfile 的问题(Python - venv)
- html - 玉石动态表的制作方法
- java - Anylogic-改善输出
- python - 即使我添加了 {% csrf_token %} 我该如何解决这个错误
- python - 我不断收到这个奇怪的连续错误。有谁知道如何修理它?
- ubuntu - ubuntu 18.04.4 上的虚拟机安装失败
- drools - 如何在不使用业务中心 kie 容器的情况下在本地创建 KJar
- java - 在android java中运行另一个函数之前,将图像上传到firestore存储的等待函数如何完成?
- mysql - 为什么在 typeorm 中更新实体后调用 delete?
- .net-core - 在调用 IPublicClientApplication.AcquireTokenInteractive(...WithPrompt) 的 .NET Core 3.1 WPF 桌面应用程序中,是否可以创建自定义弹出窗口?