MySQL计算每个客户的在线订单与电话订单的百分比

标签 mysql sql database

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

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

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;

如果你想要客户名称而不是 id,你可以添加一个 join

关于MySQL计算每个客户的在线订单与电话订单的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691308/

相关文章:

mysql - 错误 1264 MySQL,即使该值在 int 参数内

php - 如果值为 null,则返回 0

mysql - 在更新和替换中使用通配符

mysql - INSERT INTO 从 select 语句中删除 mysql 中的一个字段

sql - 使用 SQL 垂直展开表

php - 重构 PHP 脚本以在 2 个数据库服务器之间执行 mysql 更新

sql - 如何获得分组列的前 10 名?

sql-server - 在 1 台服务器上的 2 个不同数据库中的表之间使用 INNER JOIN 更新查询

php - 有没有办法将MySQL数据库信息下载到SQLite

php - 在单个脚本中连接多个数据库的优缺点