这是我正在使用的SQL。但是平均值不是针对不同的职位编号,而是全部使用。

我想按客户获取平均工作时间和独特工作的总数。平均时间只能基于唯一的工作编号。

SELECT CUSTOMER, COUNT(DISTINCT JOB_NO) AS JOB_COUNT, AVG(WORK_TIME) AS WT
FROM CYCLE_TIME
GROUP BY CUSTOMER


任何帮助将不胜感激。

查尔斯,我使用了您的第一个查询,并与一个客户进行了测试。使用以下WT值,我为客户获得5个工作。 28.95, 24.72, 2.56, 15.14, 8.94。平均值为16.06

如果我使用以下查询并且仅按客户分组,则平均值(WT)最终为22.39。我不确定那里发生了什么。

 SELECT CUSTOMER, JOB_NO, AVG(WORK_TIME) AS WT
 FROM CYCLE_TIME
 WHERE CUSTOMER='customer_a'
 GROUP BY CUSTOMER

最佳答案

对基于AVGSUM()/COUNT(DISTINCT)使用您自己的计算:

SELECT
    CUSTOMER,
    COUNT(DISTINCT JOB_NO) AS JOB_COUNT,
    SUM(WORK_TIME)/COUNT(DISTINCT JOB_NO) AS WT
FROM CYCLE_TIME
GROUP BY CUSTOMER

关于mysql - 根据不同的值对一列进行平均,对其他列进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23377255/

10-15 00:06