2017-02-23 156 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