Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择平均每月计数,按字段分组_Mysql_Sql - Fatal编程技术网

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

Mysql 选择平均每月计数,按字段分组,mysql,sql,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 如何返回按公司id分组的每月平均数和/或平均数?重要的是,只计算实际有发票的期间。

我不确定以前是否有人问过这个问题,因为我不知道如何最好地表达这个问题

给出如下查询:

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

如何返回按公司id分组的每月平均数和/或平均数?重要的是,只计算实际有发票的期间。

如果要排除零个月,请添加
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

发布一些示例现有数据和预期输出。您的查询当前无法使用索引来回答
分组依据
计数()
(读取,在大型数据集上速度非常慢)。如果您有一个日历表(这对于分析非常有用),您可以将其转换为子选择的范围查询-我显示一个相关的变量。请注意,一般来说,避免按函数结果分组是很好的…@Clockwork Muse,我知道这很慢。但是,我只需要一个一次性的查询就需要这个。谢谢,我想我可能需要使用一个临时表来完成这个查询。@Clockwork缪斯:你说得对,我最后错过了
分组方式。现在修复了…和+1'd。当然,这在大多数其他系统中都不是问题,因为它们会为缺少的子句抛出一个错误。但是在MySQL中。。。