SQL语句:rank() over()用法记录

孤人 提交于 2020-01-06 14:59:39

一.rank over(order by 列名)

1、 按age升序给运动员排名

select pid,name,age,rank() over(order by age) as rank_num from players;
å¨è¿éæå¥å¾çæè¿°

可以看到有好几个age相同的运动员,他们并列排在第2。

2、查询排名为第10的学生的姓名,年龄

select name,age
from (select pid,name,age,rank() over(order by age) as rank_num from players) 
where rank_num= 10;

å¨è¿éæå¥å¾çæè¿°

整个结果集为一个分组,下面我们可以指定通过partition by 给结果集进行分组,
rank在每个分组内进行排名。

二:rank over(partition by 列名,order by 列名)

partition by用于给结果集分组。
rank在每个分组内进行排名。

1、按年龄分组,组内按分数降序排名
select name,age,score,rank() over(partition by age order by score desc) as rank_num from players;
å¨è¿éæå¥å¾çæè¿°

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!