博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle排名函数(Rank)实例详解
阅读量:7027 次
发布时间:2019-06-28

本文共 1289 字,大约阅读时间需要 4 分钟。

hot3.png

--已知:两种排名方式(分区和不分区):使用和不使用partition

--两种计算方式(连续,不连续),对应函数:dense_rank,rank查询原始数据:学号,姓名,科目名,成绩

select * from t_score

·查询各学生科目为Oracle排名(简单排名)

select sc.s_id,sc.s_name,sub_name,sc.score, rank() over (order by score desc) 名次from t_score scwhere sub_name='Oracle'

 对比:rank()与dense_rank():非连续排名与连续排名(都是简单排名)

select sc.s_id,sc.s_name,sub_name,sc.score, dense_rank() over (order by score desc) 名次from t_score scwhere sub_name='Oracle'

·查询各学生各科排名(分区排名)

select sc.s_id,sc.s_name,sub_name,sc.score, rank() over (partition by sub_name order by score desc) 名次from t_score sc

·查询各科前2名(分区排名)

·类似:新闻表,求栏目点击率在前3位的新闻。

商品表,求各类别销售额在前10位的商品。

select * from (select sc.s_id,sc.s_name,sub_name,sc.score,dense_rank() over(partition by sub_name order by score desc) 名次from t_score sc) xwhere x.名次<=2

&middot;查询各同学总分

select s_id,s_name,sum(score) sum_score from t_scoregroup by s_id,s_name

根据总分查询各同学名次

select x.*,rank() over (order by sum_score desc) 名次from (select s_id,s_name,sum(score) sum_score from t_scoregroup by s_id,s_name ) x

语法:

rank() over (order by 排序字段 顺序)

rank() over (partition by 分组字段 order by 排序字段 顺序)

1.顺序:asc|desc  名次与业务相关:

  示例:找求优秀学员:成绩:降序  迟到次数:升序

2.分区字段:根据什么字段进行分区。

转载:http://blog.csdn.net/cczz_11/article/details/6053539

转载于:https://my.oschina.net/u/1268001/blog/196131

你可能感兴趣的文章
【Unity Shader】自定义材质面板的小技巧
查看>>
icon文件操作
查看>>
BeatSaber节奏光剑双手柄MR教程
查看>>
分组聚合
查看>>
冒泡排序(bubble sort)
查看>>
eclipse新建JSP页面报错:Multiple annotations found at this line解决方法
查看>>
bzoj3685
查看>>
为什么更喜欢Outlook,而不是Gmail
查看>>
C#中的事件和委托
查看>>
设计模式之(Adapter)适配器模式
查看>>
python中函数的定义、返回值以及参数的简要介绍
查看>>
没有名字
查看>>
4/16 近期状态
查看>>
线程基础2
查看>>
【本周主题】第二期:浏览器组成及工作原理深度了解
查看>>
Unity Webplayer installation error- Unity Webplayer update finished, but installed..
查看>>
自定义美化滚动条
查看>>
idea之查看类的上下级继承关系
查看>>
preHandle 添加参数和重写参数的问题,重写HttpServletRequestWrapper和Filter
查看>>
〖Android〗依据资源信息,Mock Android资源
查看>>