有两个表JOB
和WORKER
。
工作表
- 乔比
工人表
- 工人ID
- JOBID(来自 JOB 表的 FK)
- 假期(“Y”或“N”)
通过这两个表,我想找到一个现在没有分配工人的工作列表。我进行了以下查询,但由于聚合函数SUM
和CASE WHEN
.
有比这更好的查询吗?
SELECT
SUBQUERY.JOBID
FROM
(
SELECT
JOBID,
SUM
(
CASE WHEN
VACATION = 'N'
THEN 1
ELSE 0
END
) NUM_WORKERS
FROM
JOB
LEFT JOIN
WORKER
ON
JOB.JOBID = WORKER.JOBID
GROUP BY
JOB.JOBID
) SUBQUERY
WHERE
SUBQUERY.NUM_WORKERS = 0