2014-01-30 72 views
0

我正在構建MySQL查詢。我有一個數據庫表,我正在存儲工作會議。它看起來像這樣:MySQL語句中的聚合結果

(int) id 
(int) user_id 
(timestamp) created_at 
(timestamp) stopped_at 

我希望能夠以秒爲單位檢索每個日期的時間花費。 到目前爲止,這是我的查詢是什麼樣子:

SELECT DATE(created_at) as date, TO_SECONDS(stopped_at) - TO_SECONDS(created_at) as time FROM work_sessions GROUP BY date; 

這是接近我想要的結果,但每個「日期」將只包含時間,該組中的第一行。相反,我希望將日期的每個'時間'列彙總爲一個結果。

回答

1

嘗試這種方式

SELECT DATE(created_at) date, 
     SUM(TIMESTAMPDIFF(SECOND, created_at, stopped_at)) time 
    FROM work_sessions 
GROUP BY DATE(created_at); 

注:這是假設,一個工作會話不能跨越午夜跨越。

這裏是SQLFiddle演示

+0

完美!這正是我想要的。 關於跨越午夜的會議,我想這些只會與開始日期相總結? – Stromgren

+1

這是正確的。這些行的時差將落入'DATE(created_at)'組中。 – peterm

+0

非常適合! - 感謝您的快速回復! – Stromgren

0

這就是你想要的嗎?

SELECT 
    DATE(created_at) as date, 
    GROUP_CONCAT(TO_SECONDS(stopped_at) - TO_SECONDS(created_at) SEPARATOR ", ") as time 
FROM work_sessions 
GROUP BY date;