MySQL复杂选择与时间聚合
SQL FIDLE中的模式: 我想做的是让所有人都投入到这样一个项目中:MySQL复杂选择与时间聚合,mysql,select,sum,aggregate-functions,Mysql,Select,Sum,Aggregate Functions,SQL FIDLE中的模式: 我想做的是让所有人都投入到这样一个项目中: Date | Project | Persons | Total Time ------------------------------------------------------------------------ 25.11.2013 | Project One | Jane Doe hh:mm, John Doe hh:mm | Total hh:
Date | Project | Persons | Total Time
------------------------------------------------------------------------
25.11.2013 | Project One | Jane Doe hh:mm, John Doe hh:mm | Total hh:mm
26.11.2013 | Project One | Jane Doe hh:mm, John Doe hh:mm | Total hh:mm
27.11.2013 | Project One | Jane Doe hh:mm, John Doe hh:mm | Total hh:mm
28.11.2013 | Project Four| Jane Doe hh:mm, John Doe hh:mm | Total hh:mm
我真的不知道如何得到这个输出,尤其是逗号分隔的部分
希望有人有或有类似的问题,帮助我找到解决方案。
根据你的数据——我相信你需要从总结每个人每天在每个项目中所做的事情开始。(你有一个例子,John Doe一天工作两次)。该解决方案是(workunits列只是想知道每个项目中是否有一个人每天有多个记录):
然后,为了得到最终结果,您需要每天对每个项目进行总结
SELECT `date`, projectstart
, GROUP_CONCAT(CONCAT(person,' ',CAST(worked AS time))) AS people
, SUM(worked) AS worked
FROM (SELECT `date`, projectstart, person, COUNT(*) as workunits
, SUM(TIMEDIFF(CAST(end AS time), CAST(begin AS time))) AS worked
FROM IMPORT
GROUP BY `date`, projectstart, person) AS t
GROUP BY `date`, projectstart;
你能解释一下这一栏的意思吗?具体来说,哪一列是项目,如何计算总时间,以及姓名右侧的时间值来自何处。列名在fiddle中不相同von是什么,PROJECT在哪里,Date?抱歉。我在这里更新了小提琴。ProjectStart和ProjectEnd始终相同。
SELECT `date`, projectstart
, GROUP_CONCAT(CONCAT(person,' ',CAST(worked AS time))) AS people
, SUM(worked) AS worked
FROM (SELECT `date`, projectstart, person, COUNT(*) as workunits
, SUM(TIMEDIFF(CAST(end AS time), CAST(begin AS time))) AS worked
FROM IMPORT
GROUP BY `date`, projectstart, person) AS t
GROUP BY `date`, projectstart;