最初给表格提供如下数据:
ID |user |Contact |Duration
1 asif 11 00
2 bob 22 65
3 cena 33 00
4 asif 44 00
5 cena 33 00
6 cena 33 00
7 bob 55 43
8 asif 44 33
9 bob 66 00
我想为每个用户提供不同的联系人数量,我使用了以下内容:
select user, count(distinct contact) from table group by user;
为我提供了以下输出:
|A |count
asif 2
bob 3
cena 1
现在,我希望用户的总持续时间以及ACD(平均呼叫持续时间= duration_total / count of contact with duration > 0
)。例如:
| asif'ACD = (33+00+00)/1 = 33 |
| bob'ACD = (65+43+00) /2 = 54 |
| cena'ACD = (00+00+00 /0 = 0 |
我正在寻找的最终结果是
|user |count |duration_total |ACD
asif 2 33 33
bob 3 108 54
cena 1 00 00
有人可以给我一些关于我应该使用什么SQL命令的建议吗?
答案 0 :(得分:0)
您可以将sum
与case
一起使用。要注意的一件事是不要除零,因此子查询:
select user,
contactcount,
duration,
case when durationcount = 0 then 0 else duration/durationcount end
from (
select user,
count(distinct contact) contactcount,
sum(duration) duration,
sum(case when duration > 0 then 1 else 0 end) durationcount
from table
group by user
) t