首页 > 解决方案 > MySQL 显示比例

问题描述

我试图显示一部分客户因为他/她被其他客户和没有推荐的客户推荐而注册。到目前为止,我只能将其显示为数字,但我想以百分比显示Null 是指客户在没有被推荐的情况下注册

原始数据如下:

CustomerID    ReferralID
1000004        1000003
1000015        1000010
1000007        1000004
1000011           Null
1000026        1000004

我拥有的查询并返回数据如下:

select customerID, COUNT(*) as proportion
from company123.customertable
group by (customerID)
order by customerID asc;
CustomerID    proportion        
1000004         1               
1000015         1               
1000007         1              
1000011         1               
1000026         1               

预期结果

CustomerID    referred        non-referred
1000004         1                  0
1000015         1                  0
1000007         1                  0
1000011         0                  1
1000026         1                  0

任何建议将其显示为百分比?先感谢您

标签: mysqlsql

解决方案


您可以在这样的案例语句中使用聚合函数

SELECT 
    COUNT(*) customers,
    SUM(CASE WHEN referral_id IS NOT NULL THEN 1 ELSE 0 END) / COUNT(*) AS referred,
    SUM(CASE WHEN referral_id IS NULL THEN 1 ELSE 0 END) / COUNT(*) AS non_referred
FROM company123.customertable

应该给你这样的东西(数字是组成的)

customers referred non_referred
12301     0.7128   0.2872

推荐阅读