我确信答案就在某个地方,但找不到......
一个表存储员工记录的工时,按类型(类型 = 项目或任务)分类。 每天,我可以花几个小时记录多个任务。
通过进行简单的求和和分组,我可以获得每种类型和每天的总小时数,但我想更进一步: 仅显示“错误情况”,其中每个项目的总和(小时)与给定日期的所有任务的总和(小时)不同。
mysql> select sum(logged), type, date from `hoursLog` group by idEmployee, date, type;
+-------------+----------+----------+
| sum(logged) | type | date |
+-------------+----------+----------+
| 0.8 | Project | 20160525 |
| 1.0 | Task | 20160525 |
| 0.3 | Project | 20160526 |
| 0.3 | Task | 20160526 |
| 0.3 | Project | 20160527 |
| 0.5 | Task | 20160527 |
+-------------+----------+----------+
从上表中,我只需要日期 20160525 和 20160527,它们的总和不同。
感谢任何帮助!
最佳答案
SELECT
SUM(IF(`type`='Task',logged,0)) task_hours,
SUM(IF(`type`='Project',logged,0)) project_hours,
date
FROM `hoursLog`
GROUP by idEmployee, date
HAVING task_hours <> project_hours
但我不确定您是否真的需要GROUP BY idEmployee
。我想这现在有效只是因为测试数据库中的记录很少,只有 1 名员工参与。您需要总结每个人的时间吗?还是只是按日期?
关于MySQL 选择具有 sum(criteria1) <> sum(criteria2) 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596412/