我们可以在mysql中使用group_concat中的sum吗?

时间:2018-01-22 08:25:16

标签: mysql sql group-by aggregate-functions

我有一张桌子,从这里我想得到三列。例如user_id,entry_date,time_duration。从这个查询中,我希望得到员工的总和(持续时间)。

我的表结构是 -

enter image description here

我的预期结果是 -

enter image description here

我的查询和我得到的是

enter image description here

我怎样才能得到实际结果?

1 个答案:

答案 0 :(得分:1)

我们可以在这里聚合两次。首先,按人和日期汇总以生成时间总和。然后仅按人聚合第二次,并为日期和时间总和生成CSV输出。

SELECT
    sno,
    GROUP_CONCAT(entry_date ORDER BY entry_date) AS entry_dates,
    GROUP_CONCAT(CAST(sum_time AS CHAR(50)) ORDER BY entry_date) AS sum_times
FROM
(
    SELECT sno, entry_date,
       SEC_TO_TIME(SUM(TIME_TO_SEC(time_duration))) AS sum_time
    FROM yourTable
    GROUP BY sno, entry_date
) t
GROUP BY sno;

请注意,如果您想要总和一些时间,我们需要做一些工作。一种选择是将时间转换为秒,求和,然后将秒转换回时间。我做not take credit for figuring out this method

按照下面的演示链接,使用问题提供的示例数据查看实际查询。

Demo