Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。
rank() over,dense_rank(),row_number() 的区别
rank() over课程编号为4的课程成绩相同的人排名相同,排名不连续 1 2 2 4
select cno, rank() over(partition by cno order by grade desc)
from t_score
where instr('2,4', cno) > 0

dense_rank() over课程编号为4的课程成绩相同的人排名相同,排名不连续 1 2 2 3
select cno 课程编号, dense_rank() over(partition by cno order by grade desc) 排名
from t_score
where instr('2,4', cno) > 0
row_number() over课程编号为4的课程成绩相同的人排名相同不同,排名连续1 2 3 4
select cno 课程编号, row_number() over(partition by cno order by grade desc) 排名
from t_score
where instr('2,4', cno) > 0
