2016-07-12 94 views
0

我有一個數據庫,其中包含一些圖像的信息,每行包含一個createdAt日期和一個viewCount。數據範圍從2014年9月至今(2016年7月)。我想獲得的所有圖像視圖的量的總和每月月供MySQL`SUM`與`GROUP BY`在結果中缺少數據

當我運行查詢

SELECT YEAR(createdAt), MONTH(createdAt), SUM(viewCount) 
FROM Images 
GROUP BY MONTH(createdAt); 

我只是在2014年9月和2015年8月

之間返回12行有成果
Year | Month | Views 
------------------- 
2014 | 9 | 1452 
2014 | 10 | 279 
2014 | 11 | 34428 
2014 | 12 | 4763 
2015 | 1 | 2826 
2015 | 2 | 777 
2015 | 3 | 568 
2015 | 4 | 1309 
2015 | 5 | 46744 
2015 | 6 | 1541 
2015 | 7 | 8160 
2015 | 8 | 91 

如果我添加日期剋制它會給我的最新數據,但同樣只有12行

SELECT YEAR(createdAt), MONTH(createdAt), SUM(viewCount) 
FROM Images WHERE createdAt > DATE('2015-08-01 00:00:00') 
GROUP BY MONTH(createdAt); 

Year | Month | Views 
-------------------- 
2015 | 8 | 981 
2015 | 9 | 1031 
2015 | 10 | 2566 
2015 | 11 | 3325 
2015 | 12 | 411  
2016 | 1 | 2140 
2016 | 2 | 710 
2016 | 3 | 714 
2016 | 4 | 1985 
2016 | 5 | 426 
2016 | 6 | 119 
2016 | 7 | 81 

我意識到,自從7月份以來,第二個查詢停在那裏,因爲這是數據結束的地方,但爲什麼第一個查詢不會返回所有結果呢?

+1

來看通過它出現什麼你想要的,也儘量用'YEAR(createdAt)'以及在第一個查詢分組。 –

回答

1

集團的年/月:

SELECT YEAR(createdAt), MONTH(createdAt), SUM(viewCount) 
FROM Images 
--WHERE createdAt > DATE('2015-08-01 00:00:00') 
GROUP BY YEAR(createdAt), MONTH(createdAt); 

相關Group by clause in mySQL and postgreSQL, why the error in postgreSQL?

請記住,從MySQL 5.7.6+您的初始查詢甚至可能不會,因爲這是默認設置only_full_group_by工作。

+0

這給了我所有的結果(當然刪除了WHERE子句) –

1

您可以簡單地添加年初你按

SELECT YEAR(createdAt), MONTH(createdAt), SUM(viewCount) 
FROM Images 
GROUP BY YEAR(createdAt), MONTH(createdAt) 
ORDER BY YEAR(createdAt), MONTH(createdAt)