我有关系讲师(ID,姓名,部门名称,工资)。
我们作业中的问题要求我们:使用 SQL 中的排名函数编写一个查询,以找出收入最高的前 10 名教师的 ID 和姓名。
我可以通过使用 select id, name, rank() over(order by(salary) desc) as sal
from instructor order by sal
对讲师进行排名
我要捕获前 10 名导师的下一步是什么?谢谢。
最佳答案
您的 solution接近答案,但通常最好使用 RANK() 函数给出的值:
select id
, name
, sal
from (
select id
, name
, sal
, rank() over(order by(salary) desc) as sal_rank
from instructor
)
where sal_rank <=10
/
rownum 的问题在于它任意截断了结果集。如果我们获得并列第十名,那么了解这一事实通常很重要。使用 ROWNUM 会返回单个随机记录。
有时 ROWNUM - 或分析 ROW_NUMBER() - 将是正确的。这取决于具体的业务需求。
关于sql - 使用 rank 选择 Oracle SQL 中的前 10 个元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2335924/