我试图获取每个用户未接来电的百分比,因此我使用了以下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个,这似乎根本不是正确的输出。有人可以帮助我确定查询中的错误吗?非常感谢你!
答案 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
。