Oracle排名函数(Rank)实例详解 您所在的位置:网站首页 RANK函数排名 Oracle排名函数(Rank)实例详解

Oracle排名函数(Rank)实例详解

2024-01-16 03:41| 来源: 网络整理| 查看: 265

这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下

 

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

--两种计算方式(连续,不连续),对应函数:dense_rank,rank

·查询原始数据:学号,姓名,科目名,成绩

select * from t_score

 

S_ID S_NAME SUB_NAME SCORE 1 张三 语文 80.00 2 李四 数学 80.00 1 张三 数学 0.00 2 李四 语文 50.00 3 张三丰 语文 10.00 3 张三丰 数学   3 张三丰 体育 120.00 4 杨过 JAVA 90.00 5 mike c++ 80.00 3 张三丰 Oracle 0.00 4 杨过 Oracle 77.00 2 李四 Oracle 77.00

 

  ·查询各学生科目为Oracle排名(简单排名) select sc.s_id,sc.s_name,sub_name,sc.score, rank() over ( order  by score  desc) 名次 from t_score sc where sub_name='Oracle'  

 

S_ID S_NAME SUB_NAME SCORE 名次 4 杨过 Oracle 77.00 1 2 李四 Oracle 77.00 1 3 张三丰 Oracle 0.00 3

 

    对比:rank()与dense_rank():非连续排名与连续排名(都是简单排名)   select sc.s_id,sc.s_name,sub_name,sc.score, dense_rank() over ( order  by score  desc) 名次 from t_score sc where sub_name='Oracle'

 

S_ID S_NAME SUB_NAME SCORE 名次 4 杨过 Oracle 77.00 1 2 李四 Oracle 77.00 1 3 张三丰 Oracle 0.00 2

 

  ·查询各学生各科排名(分区排名) 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

 

S_ID S_NAME SUB_NAME SCORE 名次 4 杨过 JAVA 90.00 1 4 杨过 Oracle 77.00 1 2 李四 Oracle 77.00 1 3 张三丰 Oracle 0.00 3 5 mike c++ 80.00 1 3 张三丰 数学   1 2 李四 数学 80.00 2 1 张三 数学 0.00 3 3 张三丰 体育 120.00 1 1 张三 语文 80.00 1 2 李四 语文 50.00 2 3 张三丰 语文 10.00 3

 

·查询各科前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 ) x where x.名次


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有