您好,我正在尝试实现一个查询,从数据库与小时和日期,我可以选择某些部门的所有小时的总和,在某些年份。
表格示例如下:

到目前为止,我生成的查询如下:
SELECT t.clientid, t.date, t.department, t.time,
(SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) FROM time_management WHERE YEAR(t.date)='$year' AND MONTH(t.date)= 12 GROUP BY t.clientid ) as january,
(SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) FROM time_management WHERE YEAR(t.date)='$year' AND MONTH(t.date)= 2 GROUP BY t.clientid ) as february
FROM time_management t GROUP by t.clientid我想要做的是为2016年1月选择所有小时的总和。在当前状态下,我将获得所有客户端的所有小时总和的结果,并且我希望逐个客户端获得结果:
当前结果为:

所以我正在寻找的是如何获得按clientid分组的次数结果的总和,并得到2个结果,而不是只有1个结果。两个客户端id的总和。分别对每一个进行求和?
任何帮助都将不胜感激。谢谢!
发布于 2016-12-09 05:34:48
您应该能够在没有子查询的情况下执行此操作-
SELECT `date`, `department`, SUM(`time`)
FROM `time_management`
WHERE YEAR(`date`)='$year' AND MONTH(`date`)= 12
GROUP BY `client_id`我建议您在数据库中以秒为单位存储时间-它唯一需要显示为小时和分钟的时间是当它被格式化以在客户端屏幕上显示时。如果您确实将其存储为字符串,则必须将所有转换内容放回原处。
再看一看,我还建议您将年和月存储为单独的列,或者存储为基于模式的整数:可能是201612,或者类似的东西。这也会清理你的where子句。
https://stackoverflow.com/questions/41048601
复制相似问题