常用函数--oracle row_number() over理解

--说明:
row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).
--全表记录
select * from t1;

15720542_200911111554521.jpg
--对记录集合a.*做处理,处理方式:把a.*这个记录集,按id排序,并加上一列唯一标识
select a.*, row_number() over (order by a.id)  from t1 a

15720542_200911111555391.jpg
--对id2进行处理,处理方式:把ID这一列值相同的,对应的ID2,进行求合
select id,id1,id2, sum(id2)  OVER (PARTITION BY id) id2_sum from t1

15720542_200911111556381.jpg
--如果不需要按某列值分割求和,可以用null处理
select id,id1,id2, sum(id2)  OVER (PARTITION BY null) id2_sum from t1

15720542_200911111558051.jpg
--对记录集合a.*按id分组,按id2降序,最后计算得到一个值来标识第一行
select a.*, row_number() over (partition by id order by a.id2 desc )  from t1 a

15720542_200911111557121.jpg
--特殊用法,可用来从两条相同记录中,任意取一条
select a.*,row_number() over (order by id) as xxx from t1 a where a.id1=1

15720542_200911111558471.jpg


 

fj.png1.jpg

fj.png2.jpg

fj.png3.jpg

fj.png5.jpg

fj.png4.jpg

fj.png6.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-619418/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15720542/viewspace-619418/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值