MySQL平均计数与位置和分组依据

时间:2018-07-24 17:07:36

标签: mysql count average

此表保留了销售员拨打的电话的记录:

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

使用此表,我想计算两件事:

  1. 每个客户的平均通话次数:每个客户的平均通话次数。

    在这种情况下,数字应返回:3

  2. 每个销售员的平均通话次数:每个销售员的平均通话次数。

    在这种情况下,数字应返回:2

计算平均值几乎是基本的数学知识。这只是计数/添加和除以行数的问题。但是在MySQL中,我无法弄清楚在没有特定值提供WHERE条款的情况下该怎么做?我的意思是,如果我想计算销售人员34的平均值,我将指定WHERE salespersonid=sp34。而且,如果我想计算客户2345的平均致电,我会做WHERE clientid=c2345,但在这里,我想计算平均值。

2 个答案:

答案 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;

相关问题