获得每个用户的总呼叫持续时间

时间:2016-03-05 20:07:40

标签: mysql sql

最初给表格提供如下数据:

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命令的建议吗?

1 个答案:

答案 0 :(得分:0)

您可以将sumcase一起使用。要注意的一件事是不要除零,因此子查询:

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