按月分组帐户中的缺失值

时间:2015-07-23 13:45:58

标签: sql

我正在尝试检索每月添加到数据库的平均记录数。然而,几个月没有添加任何记录,该行缺失,因此没有计算到平均值。

以下是查询:

SELECT AVG(a.count) AS AVG
FROM ( SELECT COUNT(*) AS count, MONTH(InsertedTimestamp) AS Month
    FROM Certificates
    WHERE InsertedTimestamp >= '9/19/2014'
        AND InsertedTimestamp <= '7/1/2015'
    GROUP BY MONTH(InsertedTimestamp)

) AS a

当我只运行内部查询时,只显示月份9,10,11的结果,因为12,1,2,3,4,5,6,7个月没有记录。如何将这些缺失的行添加到表中以获得正确的月平均值?

谢谢!

1 个答案:

答案 0 :(得分:0)

这很容易修复,只需使用sum / cnt:

  SELECT COUNT(*) / (TIMESTAMPDIFF(month, '2014-09-19', '2015-07-01' ) + 1)
  FROM Certificates
  WHERE InsertedTimestamp >= '2014-09-19'  AND
        InsertedTimestamp <= '2015-07-01' ;

你甚至不需要子查询。