具有 GROUP、MIN 和 NULL 值的 SQL 命令的唯一结果
Unique results for SQL command with GROUP, MIN and NULL values
我有一个 table inquiry
,包含 job
、gender
列(女性 TRUE
,男性 FALSE
)和 salary
。 None 列是唯一的,salary
可能包含 NULL
。如何找到女性 (TRUE
) 每个 job
的最低 salary
?如果例如有条目 [pilot ; TRUE ; 100]
、[pilot ; FALSE ; 100]
、[pilot ; TRUE ; NULL]
和 [pilot ; FALSE ; 120]
,下面的代码 returns [pilot ; 100]
两次而不是一次。
SELECT TOP (100) PERCENT T.JOB, T.SALARY
FROM INQUIRY AS T INNER JOIN
(SELECT JOB, MIN(SALARY) AS SL
FROM INQUIRY AS T
WHERE (SALARY IS NOT NULL) AND (GENDER = 1)
GROUP BY JOB) AS x ON x.JOB = T.JOB AND x.SL = T.SALARY
聚合函数忽略 null
s。失去连接,你应该没问题:
SELECT job, MIN(salary)
FROM inquiry
WHERE gender = 1
GROUP BY job
我有一个 table inquiry
,包含 job
、gender
列(女性 TRUE
,男性 FALSE
)和 salary
。 None 列是唯一的,salary
可能包含 NULL
。如何找到女性 (TRUE
) 每个 job
的最低 salary
?如果例如有条目 [pilot ; TRUE ; 100]
、[pilot ; FALSE ; 100]
、[pilot ; TRUE ; NULL]
和 [pilot ; FALSE ; 120]
,下面的代码 returns [pilot ; 100]
两次而不是一次。
SELECT TOP (100) PERCENT T.JOB, T.SALARY
FROM INQUIRY AS T INNER JOIN
(SELECT JOB, MIN(SALARY) AS SL
FROM INQUIRY AS T
WHERE (SALARY IS NOT NULL) AND (GENDER = 1)
GROUP BY JOB) AS x ON x.JOB = T.JOB AND x.SL = T.SALARY
聚合函数忽略 null
s。失去连接,你应该没问题:
SELECT job, MIN(salary)
FROM inquiry
WHERE gender = 1
GROUP BY job