2017-02-23 111 views
1

我试图显示2016年每个月的平均计数/记录数。下面的代码不显示每个月,而只显示2016年的月平均值:MONTH计算COUNT的AVG

SELECT  AVG(DISTINCT DayCnt) AS AvgCnt 
FROM 
(
    SELECT  COUNT(*) As DayCnt 
    FROM  table 
    WHERE  YEAR(Insert_Date) = '2016' 
    GROUP BY MONTH(Insert_Date) 
) 
AS AvgCnt 
+0

您能否提供带有样本数据的表格脚本? – sam

+1

子查询不是基本上做你想要的吗? –

+0

标记您正在使用的dbms。 (在那里使用了一些产品特定的SQL函数...) – jarlh

回答

0

我不知道,因为你没有张贴的数据,但如果我理解正确的话,这应该为你工作:

SELECT  AVG(DayCnt) AS AvgCnt, mth 
FROM 
(
    SELECT  COUNT(*) As DayCnt, MONTH(Insert_Date) as mth 
    FROM  table 
    WHERE  YEAR(Insert_Date) = '2016' 
    GROUP BY MONTH(Insert_Date), DAY(Insert_Date) ) 
AS AvgCnt 
GROUP BY mth 
+0

内部查询结果和外部之间的区别是什么? –

+0

内部查询应该为您提供2016年的日期和月份的行数。外部查询应为您提供一个月内每天收到的平均行数。 – asemprini87

+0

好的,但月组应该在天组之前 –

0

你首先应该是组每月和天你的结果和日常计算插入记录,之后得到每月插入记录的平均值试试这个:

SELECT  monthGroup, AVG(DayCnt) AS AvgCnt 
FROM 
(
    SELECT  MONTH(Insert_Date) monthGroup, DAY(Insert_Date) dayGroup, COUNT(*) As DayCnt 
    FROM  table 
    WHERE  YEAR(Insert_Date) = '2016' 
    GROUP BY MONTH(Insert_Date), DAY(Insert_Date) 
) 
AS AvgCnt 
GROUP BY monthGroup