Oracle问题——排名函数(rank与dense_rank)
2017-07-13 16:32
375 查看
已知:两种排名方式(分区和不分区):使用和不使用partition
两种计算方式(连续,不连续),对应函数:dense_rank,rank
语法:
rank() over (order by 排序字段 顺序)
rank() over (partition by 分组字段
order by 排序字段 顺序)
dense_rank()同上!
例子:
·查询各学生科目为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'
对比: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'
查询各学生各科排名(分区排名)
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名(分区排名)
根据总分查询各同学名次
select x.*,
rank() over (order by sum_score desc) 名次
from (
select s_id,s_name,sum(score) sum_score
from t_score
group by s_id,s_name ) x
两种计算方式(连续,不连续),对应函数:dense_rank,rank
语法:
rank() over (order by 排序字段 顺序)
rank() over (partition by 分组字段
order by 排序字段 顺序)
dense_rank()同上!
例子:
·查询各学生科目为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'
对比: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'
查询各学生各科排名(分区排名)
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名(分区排名)
根据总分查询各同学名次
select x.*,
rank() over (order by sum_score desc) 名次
from (
select s_id,s_name,sum(score) sum_score
from t_score
group by s_id,s_name ) x
相关文章推荐
- 排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句 Oracle 中分析函数用法之--rank(),dense_rank(),partition,over()
- Oracle rank和dense_rank排名函数
- oracle分析函数系列之rank,dense_rank,row_number:实现排名策略 .
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
- oracle分析函数系列之rank,dense_rank,row_number:实现排名策略
- Oracle rank和dense_rank排名函数
- oracle分析函数系列之rank,dense_rank,row_number:实现排名策略
- SQL Server 排名函数(row_number,rank,dense_rank,ntile)实例,详解
- SQL Server2005 四个排名函数(row_number、rank、dense_rank和ntile)的比较
- oracle分析函数Rank, Dense_rank, row_number
- Sql Server2005对t-sql的增强之排名函数ROW_NUMBER, RANK, DENSE_RANK, NTILE
- 如何使用Oracle的分析函数ROW_NUMBER、DENSE_RANK、RANK
- Oracle分级排序函数Rank、Dense_Rank、Row_Number比较
- Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number)
- Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
- SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较
- SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较
- 排名函数 RANK,NTILE,DENSE_RANK,ROW_NUMBER
- Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
- SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较