我有关系讲师(ID,姓名,部门名称,薪水)。
我们作业中的问题要求我们:使用SQL中的rank函数编写一个查询,查询前10名收入最高的教师的id和姓名。
我可以使用select id, name, rank() over(order by(salary) desc) as sal from instructor order by sal对讲师进行排名
我下一步如何抓住排名前十的讲师?谢谢。
发布于 2010-02-26 01:25:20
您的排名接近答案,但通常最好使用solution ()函数给出的值:
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() -将是正确的。这取决于精确的业务需求。
发布于 2010-02-26 01:04:35
实际上,我是用rownum才弄明白的。
select id, name from(
select id, name, rank() over(order by(salary) desc) as sal
from instructor order by sal
)
where rownum <=10希望这对将来的人有所帮助!
https://stackoverflow.com/questions/2335924
复制相似问题