这个where子句如何工作?
SELECT ENAME,SAL
FROM EMP E
WHERE 3 > (
SELECT COUNT(*)
FROM EMP
WHERE SAL > E.SAL
);
答案 0 :(得分:0)
此查询将返回所有员工,其中严重少于3名其他员工的薪水较高。
例如,如果您有以下一组员工和工资:
Fred $100
Bill $80
John $60
Jack $50
然后你的查询将返回除以外的所有人杰克,因为杰克有3名员工的工资高于他,但其他人都有2人或更少。
注意:您的查询严格不返回薪水最高的三名员工,因为它不会考虑重复的工资。如果您希望查询找到前3名中的员工,即使存在关联,您也可以尝试:
SELECT ENAME,SAL
FROM EMP E
WHERE (
SELECT COUNT(DISTINCT SAL)
FROM EMP
WHERE SAL > E.SAL
) < 3