【orcale语法】ROW_NUMBER() OVER()函数的用法

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

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() 中的排序字段为空,会被排到第一
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值