oracle排名函数rank()

记录一个常见的例子供学习参考

连续排名dense_rank();不连续排名rank()

分组partition;不分组

原始表:t_score

姓名       学科            成绩

张三     english        80

李四     english         70

王五     english        90

赵六     english        80

张三     chinese       90

李四     chinese       70

王五     chinese       85

赵六      chinese       90

 

查询各学生english的排名情况

结果表:

姓名        学科         成绩    排名

王五     english       90          1

张三     english       80          2

赵六     english      80           2

李四     english      70           4

sql:

select t.name,t.xueke,t.score,rank() over(order by score desc) 排名 from t_socre  t where xueke='english';

查询各学生各学科的排名情况:

结果表:

姓名        学科        成绩       排名

王五     english        90        1

张三     english        80        2

赵六     english        80        2

李四     english        70        4

张三     chinese       90        1

赵六      chinese      90        1

王五     chinese       85        3

李四     chinese       70        4

sql:

select t.name,t.xueke,t.score,rank() over(partition by xueke order by score desc) 排名 from t_score t;

查询各科前两名:

select t.name,t.xueke,t.score,rank() over(partition by xueke order by score desc) 排名 from t_score t where t.排名<=2;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值