您好我正在尝试实现一个查询,其中来自数据库的小时和日期我可以选择特定部门的所有小时数的总和,在某些年份。
表示例如下:
到目前为止,我生成的查询如下:
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个结果不仅仅是一个。两个客户端ID的总和。为他们每个人独立总结?
任何帮助都会非常感激。谢谢!
答案 0 :(得分:0)
你应该能够在没有子查询的情况下做到这一点 -
SELECT `date`, `department`, SUM(`time`)
FROM `time_management`
WHERE YEAR(`date`)='$year' AND MONTH(`date`)= 12
GROUP BY `client_id`
我建议您在几秒钟内将时间存储在数据库中 - 唯一需要显示的时间是小时和分钟,它是在客户端屏幕上显示的格式。如果你把它存储为字符串,你将不得不把所有转换的东西都放回来。
更多地看一下,我还建议将您的年份和月份存储为单独的列,或者根据模式存储整数:201612,或许类似的东西。这也将清理你的where子句。