我有一个查询,查找薪水第四高的老师的姓名。我不明白这部分
SELECT COUNT (DISTINCT T2.salary)
FROM teacher as T2
WHERE T2.salary > T1.salary
) = 3
from
SELECT name
FROM teacher as T1
WHERE (
SELECT COUNT (DISTINCT T2.salary)
FROM teacher as T2
WHERE T2.salary > T1.salary
) = 3;
我理解的方式count
是它给出了最终结果,而不是我们可以通过指定一个数字来中断它的工作。
这是teacher
table: https://i.stack.imgur.com/arm8d.jpg https://i.stack.imgur.com/arm8d.jpg(由于服务器错误,无法上传)
重点关注子查询:
SELECT COUNT(DISTINCT T2.salary)
FROM teacher AS T2
WHERE T2.salary > T1.salary
这将返回有薪水的不同教师的数量greater比老师,在每一行teacher
桌子。断言此计数等于 3 意味着任何匹配的教师都将拥有第四高的工资(因为排除了前 3 个职位)。
请注意,您的逻辑应与以下行为相同DENSE_RANK
。您还可以使用:
WITH cte AS (
SELECT *, DENSE_RANK() OVER (ORDER BY salary DESC) rnk
FROM teacher
)
SELECT name
FROM cte
WHERE rnk = 4;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)