我有一个看起来像这样的表:
emp_id | code | min
1234 | TLPAID | 480
4321 | TLPAID | 480
4321 | UPAB | 4
4321 | UUAB | 50
5555 | TLPAID | 480
5555 | ALLEUP | 10
...有数百个可能的代码,但我有兴趣将其中的 6 个相加并检查它是否小于 10。
我有一个查询:
SELECT emp_id, sum(min) as time, SEC_TO_TIME(sum(min)*60) as time_formatted
FROM codes
WHERE code IN ('ALLEPD', 'ALLEUP', 'LATEBL', 'NCNS', 'UPAB', 'UUAB')
GROUP BY emp_id HAVING time < 10
这个查询很好用,除非员工没有这 6 个代码——那么它们显然不会被返回。这就是我的问题:我需要他们出现在结果中,因为他们的时间是 0,小于 10。
现在,员工将始终拥有 code TLPAID
,所以我想知道是否有办法将该代码包含在上面提到的 6 中(这样员工将包含在查询结果中),但仍然只能将这 6 个相加?
期望的结果:
emp_id | min
1234 | 0
4321 | 54
5555 | 10
关于我应该如何处理这个问题的任何想法?