在MySQL语句中聚合结果

在MySQL语句中聚合结果,mysql,sql,Mysql,Sql,我正在构建一个MySQL查询。我有一个DB表,用于存储工作会话。看起来是这样的: (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 wo

我正在构建一个MySQL查询。我有一个DB表,用于存储工作会话。看起来是这样的:

(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;

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

这就是您想要的吗

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;
这样试试看

选择日期(创建日期)日期,
SUM(TIMESTAMPDIFF(秒,创建时,停止时))time
从工作会议
按日期分组(创建于);
注意:这是假设一个工作会话不能跨越午夜


这里是演示

完美!这正是我想要的。关于跨越午夜的会议,我想这些会议将被总结为开始日期?没错。这些行的时差将归入
日期(创建时间)
组。非常适合谢谢你的快速回复!