2010-03-31 61 views
0

我有一個MySQL表是這樣的:集結MySQL的行通過

Payments 
+----+---------------------+---------+ 
| id | date (sorted DESC) | payment | 
+----+---------------------+---------+ 
| 5 | 2010-03-26 00:00:01 | 100.00 | 
| 4 | 2010-03-19 00:00:02 | 55.12 | 
| 3 | 2010-03-19 00:00:01 | 20.00 | 
| 2 | 2010-03-12 00:00:02 | 320.00 | 
| 1 | 2010-03-12 00:00:01 | 64.56 | 
+----+---------------------+---------+ 

我怎樣才能聚集白天總付款?

付款會每週插入表中,但它們並不總是與您所看到的完全相同。可以在MySQL中進行本地聚合嗎?

期望的結果將是:預先

+------------+----------------+ 
| date  | total payments | 
+------------+----------------+ 
| 2010-03-26 |   100.00 | 
| 2010-03-19 |   75.12 | 
| 2010-03-12 |   384.56 | 
+------------+----------------+ 

感謝。

+0

在你的榜樣,你白天聚集,這是更容易和更好的方式比「給予或需要幾秒鐘的」定義。 – 2010-03-31 09:48:50

+0

我明白你的意思了。編輯更清楚。 – 2010-03-31 09:54:12

回答

3

您可以做2件事,將日期類型更改爲日期,因此只需存儲日期(這可能不適用於您的情況)。 或者您可以通過重新組合日期值來確定日期。

select date(date), sum(payment) 
from payments 
group by date(date) 
order by date(date) desc 
+0

+1,這可能是我的答案,如果我知道按日期聚合會做(見問題的評論);-) – 2010-03-31 10:08:27

0

您可以通過日期函數調用組,所以轉換的完整日期時間,只是日期部分和組通過,只要日期是在選擇,它應該是合法的。

1
SELECT CONVERT(VARCHAR(10), date , 102) as date,sum(payment) as total_payment 
FROM Payments 
GROUP BY CONVERT(VARCHAR(10), date , 102) 
ORDER BY CONVERT(VARCHAR(10), date , 102) 

應該沒問題