row_number() over(partition by a order by b desc) rn 用法
2013-10-21 08:39
621 查看
ow_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.
row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).
dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的
查询每个部门的最高工资
select deptno,ename,sal from
(select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order
from scott.emp) where sal_order <2
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.
row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).
dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的
查询每个部门的最高工资
select deptno,ename,sal from
(select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order
from scott.emp) where sal_order <2
相关文章推荐
- row_number() over(partition by a order by b desc) rn 用法
- row_number() over(partition by a order by b desc) rn 用法 收藏下
- row_number() over(partition by column1 order by column2 desc) rn 用法
- row_number() over(partition by a order by b desc) rn
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)的用法
- mysql 实现oracle里面row_number() OVER (PARTITION BY cid,author ORDER BY id DESC) 的方法
- oracle 分析函数:ROW_NUMBER() OVER(PARTITION BY ID ORDER BY VERSION DESC)
- OVER(PARTITION BY column_name1 ORDER BY column_name2) 用法 及 ROW_NUMBER\RANK\DENSE_RANK的区别
- row_number() over (partition by idno order by id desc)
- oracle 分组编号 ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN ) 的用法
- Oracle中row_number() over(partition by a order b asc,c desc)的应用
- rank() | dense_rank() | row_number() over(PARTITION BY sex order by age desc ) 的区别
- Oracle中row_number() over(partition by xxx order by xxx)的用法
- SELECT a.loginname,a.deviceid,a.time,Row_Number() OVER (partition by a.loginname ORDER BY a.deviceid desc,a.time asc) rank
- 分组 根据某一列进行排序,根据shopid分组,用createTime排序,返回row_number()序号 select no =row_number() over (partition by shopId order by createTime desc), * from Goods_info
- oracle的多字段排序去重Row_Number() Over(Partition By A, B Order By C Desc)
- row_number() over(partition by xxx order by xxx)的用法
- mysql实现ROW_NUMBER() over (PARTITION BY xx ORDER BY ** DESC)
- sql server row_number() over(partition by grower_pk order by a.pk_id desc)