sql:列中类型的百分比

时间:2018-07-14 22:37:59

标签: sql percentage

我试图获取每个用户未接来电的百分比,因此我使用了以下sql查询:

select distinct a__contact
       , count (case when a__type = 'missed' 
                     then 1 else 0 end) / count(*) * 100 
                                                  as "percentage of missed calls"

from table
group by 1

但是,对于每个用户,我得到了100个,这似乎根本不是正确的输出。有人可以帮助我确定查询中的错误吗?非常感谢你!

1 个答案:

答案 0 :(得分:0)

这是一种表达所需逻辑的简单方法:

select a__contact,
       avg(case when a__type = 'missed' then 100.0 else 0 end) as percentage_missed_calls
from table
group by 1;

您的版本失败,因为您在分子中使用count()。您确实打算sum()count()计算非NULL值的数量,并且“ 1”和“ 0”都不是NULL