此表保留了销售员拨打的电话的记录:
id | clientid | salespersonid | call_duration | date | last_update
1 | c2345 | sp34 | 05:00 | yyyy | yyyy
2 | c2345 | sp34 | 05:00 | yyyy | yyyy
3 | c2345 | sp35 | 05:00 | yyyy | yyyy
4 | c2345 | sp36 | 05:00 | yyyy | yyyy
5 | c2361 | sp36 | 05:00 | yyyy | yyyy
6 | c2361 | sp36 | 05:00 | yyyy | yyyy
使用此表,我想计算两件事:
每个客户的平均通话次数:每个客户的平均通话次数。
在这种情况下,数字应返回:3
每个销售员的平均通话次数:每个销售员的平均通话次数。
在这种情况下,数字应返回:2
计算平均值几乎是基本的数学知识。这只是计数/添加和除以行数的问题。但是在MySQL中,我无法弄清楚在没有特定值提供WHERE条款的情况下该怎么做?我的意思是,如果我想计算销售人员34的平均值,我将指定WHERE salespersonid=sp34
。而且,如果我想计算客户2345的平均致电,我会做WHERE clientid=c2345
,但在这里,我想计算平均值。
答案 0 :(得分:1)
如何?
SELECT COUNT(clientid) / COUNT(DISTINCT(clientid)) AS avg_calls_per_client
FROM calls_table
WHERE {date criteria}
SELECT COUNT(salespersonid) / COUNT(DISTINCT(salespersonid)) AS avg_calls_per_salesperson
FROM calls_table
WHERE {date criteria}
答案 1 :(得分:0)
您可以尝试以下查询
获得客户平均水平
从(选择客户端ID,选择avg(clientwisecnt.clientidcnt) 计数(clientid)为t组的clientidcnt,其中clientid为 clientwisecnt;
针对销售人员的平均水平
从中选择avg(salespersonwisecnt.salespersoncnt) 销售人员编号,计数(销售人员编号)为t组的销售人员编号 salespersonid)作为salespersonwisecnt;