我有一张桌子,从这里我想得到三列。例如user_id,entry_date,time_duration。从这个查询中,我希望得到员工的总和(持续时间)。
我的表结构是 -
我的预期结果是 -
我的查询和我得到的是
我怎样才能得到实际结果?
答案 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。
按照下面的演示链接,使用问题提供的示例数据查看实际查询。