ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 常用函数--oracle row_number() over理解

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

原创 Linux操作系统 作者:oracle_db 时间:2009-11-11 15:53:40 0 删除 编辑

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


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


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


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


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


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


 

1.jpg

2.jpg

3.jpg

5.jpg

4.jpg

6.jpg

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

请登录后发表评论 登录
全部评论

注册时间:2008-11-13

  • 博文量
    158
  • 访问量
    354239