oracle 分析函数

如果你想通过分组函数使每一组都返回多行值,那就要使用分析函数。

select id,town ,nestyle,row_number() over(partition by nestyle order by id) from tablename

row_number() over(partition by col1 order by col2)分析函数的使用:根据col1分组,分组之后根据col2排序
可以扩展:根据多个字段分组,根据多个字段排序(partition by col1,col11… order by col2,col22…)
而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)先看表内数据
select id,town,nestyle from tablename
这里写图片描述
执行语句
select id,town ,nestyle,row_number() over(partition by nestyle order by id) from tablename
查看结果
这里写图片描述

试用场景:查询各地最近发生的一件事(以地区分组,通过发生时间排序(降序desc),函数值为1的就是我们要查询的结果)一般都是将其作为一个子表来使用

这里要说明一下row_number(),rank(),dense_rank()
注意:
1.在求第一最近这种结果的时候,要考虑表中数据,因为如果同班有两个并列第一,row_number()只返回一个结果
2.rank()和dense_rank()的区别是:
–rank()是跳跃排序,有两个第二名时接下来就是第四名
–dense_rank()l是连续排序,有两个第二名时仍然跟着第三名

常用的分析函数:
row_number() over(partition by … order by …)
rank() over(partition by … order by …)
dense_rank() over(partition by … order by …)
count() over(partition by … order by …)
max() over(partition by … order by …)
min() over(partition by … order by …)
sum() over(partition by … order by …)
avg() over(partition by … order by …)
first_value() over(partition by … order by …)
last_value() over(partition by … order by …)
lag() over(partition by … order by …)
lead() over(partition by … order by …)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值