Oracle 中 ROW_NUMBER() OVER()函数的用法
一、语法
row_number() over( partition by 分组列 order by 排序列 desc )
二、语法实现过程
即先根据分组列进行一遍分组并且排序,然后对分组内根据排序列进行排序
select id, name, classid, score, row_number() over(partition by classid order by score desc) rank from Students;

在上表中CLASSID为分组列排序,排完序后在根据成绩做组内排序并且将结果赋值给RANK;
三、注意事项
1.parttion by 是 Oracle 中分析性函数的一部分,用于给结果集进行分区,它和聚合函数 group by不同的地方在于它只是将原始数据进行名次排列,能够返回一个分组中的多条记录(记录数不变),而 group by是对原始数据进行聚合统计,一般只有一条反映统计值的结果(每组返回一条)。
2.over() 必须有 ORDER BY 语句
3.分组内从 1开始排序
4.over() 中的排序字段为空,会被排到第一

本文详细介绍了Oracle中的ROW_NUMBER()OVER()函数的使用方法,包括语法、实现过程以及注意事项。重点讲解了如何利用partitionby进行分组并结合orderby进行排序,强调了over()函数与groupby的区别以及排序规则。
426

被折叠的 条评论
为什么被折叠?



