我有关系讲师(ID,姓名,部门名称,工资)。
我们的作业中的问题要求我们:使用SQL中的rank函数编写一个查询,以获得前10名收入最高的教师的ID和名称。
我可以使用select id, name, rank() over(order by(salary) desc) as sal
from instructor order by sal
我抓住十大教练的下一步是什么?感谢。
答案 0 :(得分:3)
你的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() - 将是正确的。这取决于具体的业务要求。
答案 1 :(得分:-1)
我只是实际想出来,使用rownum ......
select id, name from(
select id, name, rank() over(order by(salary) desc) as sal
from instructor order by sal
)
where rownum <=10
希望这有助于将来的某个人!