选择按字段分组的平均每月计数

时间:2014-05-26 08:10:41

标签: mysql sql

我不确定之前是否曾经问过,因为我不知道如何最好地表达这个问题。

给出如下查询:

SELECT DATE_FORMAT(i.created, '%Y-%m') as 'period',
COUNT(id) as 'total',
i.company_id
FROM invoice i
GROUP BY period, i.company_id
ORDER BY period DESC, total DESC

如何返回每月的平均和/或平均数,按company_id分组?重要的是只计算实际有发票的那些时期。

1 个答案:

答案 0 :(得分:2)

如果您要排除零个月,请添加HAVING条件,然后使用您的查询作为基础为每个公司选择AVG()

SELECT company_id, AVG(total)
FROM
  (SELECT DATE_FORMAT(i.created, '%Y-%m') as 'period',
          COUNT(id) as 'total',
          i.company_id
     FROM invoice i
     GROUP BY period, i.company_id
     HAVING COUNT(id)>0
  ) as T1
  GROUP BY company_id
相关问题