聚合结果是MySQL语句

时间:2014-01-30 07:39:23

标签: mysql sql

我正在构建一个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;

这接近我想要的结果,但每个'日期'只包含组中第一行的时间。相反,我希望将日期的每个“时间”列聚合成一个结果。

2 个答案:

答案 0 :(得分:1)

以这种方式试试

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

注意:这假设工作会话永远不会跨越午夜。

这是 SQLFiddle 演示

答案 1 :(得分: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;