2013-05-28 93 views
0

這是我的數據庫(巨大的數據庫,一個表)的一個例子。我正在使用MariaDB。SUM列和GROUP BY日期MySQL(MariaDB)

 
DATE  | SIZE  | FILES 
2013-01-06 | 1600  | 30 
2013-01-06 | 3200  | 14 
2013-02-14 | 1600  | 3 
2013-02-14 | 800   | 4 
2013-05-19 | 6400  | 300 
2013-05-19 | 9000000  | 15000 

我想在DATE中求和SIZE列和FILES列。例如,對於2013-01-06,大小爲4800,文件爲44,依此類推。我已經嘗試了查詢

SELECT DATE, SUM(SIZE) AS BYTES, SUM(FILES) AS FILES 
FROM DB.DBSA 
WHERE (DATE BETWEEN '2013-01-06' AND '2013-05-19'); 

...但它只是給共展宏圖。

+0

嘗試在查詢結尾處添加「GROUP BY DATE」 – Fabio

回答

0

查詢引擎識別該查詢作爲聚合查詢:

SELECT DATE, SUM(SIZE) AS BYTES, SUM(FILES) AS FILES 
FROM DB.DBSA 
WHERE (DATE BETWEEN '2013-01-06' AND '2013-05-19'); 

然而,沒有group by子句,因此聚集被在所有的數據(受濾波where子句中,的課程)。

在大多數數據庫中,這會導致錯誤,如「Date未被識別爲組變量」。 MySQL選擇一個任意的日期值(默認情況下,你可以設置一個參數讓它產生一個錯誤,就像它在標準SQL中一樣)。

您可以通過所需要的組:

SELECT DATE, SUM(SIZE) AS BYTES, SUM(FILES) AS FILES 
FROM DB.DBSA 
WHERE (DATE BETWEEN '2013-01-06' AND '2013-05-19') 
group by date; 

作爲另一條評論。列名稱date是一個錯誤的名稱,因爲它與函數名稱和內置數據類型都衝突。儘量讓你的名字與內置的SQL名稱不同。

+0

工作正常!沒有意識到這是簡單的事情! =) –