row_number()over函数的使用(转)
(转)http://hi.baidu.com/122439049/blog/item/0c9c48131b2734d5f7039e13.html
|
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码. row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序). rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内). dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的 . lag(arg1,arg2,arg3): 看几个SQL语句: 语句一: select row_number() over(order by sale/cnt desc) as sort, sale/cnt 执行结果: SORT SALE/CNT 语句二:查询员工的工资,按部门排序 select ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order from scott.emp; 执行结果: ENAME SAL SAL_ORDER 已选择14行。 语句三:查询每个部门的最高工资 select deptno,ename,sal from 执行结果: DEPTNO ENAME SAL 已选择3行。 语句四: select deptno,sal,rank() over (partition by deptno order by sal) as rank_order from scott.emp order by deptno; 执行结果: DEPTNO SAL RANK_ORDER 已选择14行。 语句五: select deptno,sal,dense_rank() over(partition by deptno order by sal) as dense_rank_order from scott.emp order by deptn; 执行结果: DEPTNO SAL DENSE_RANK_ORDER 已选择14行。 语句六: select deptno,ename,sal,lag(ename,1,null) over(partition by deptno order by ename) as lag_ from scott.emp order by deptno; 执行结果: DEPTNO ENAME SAL LAG_ 已选择14行。 |
row_number()over函数的使用(转)的更多相关文章
- SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是mysql,之前看到的参考例子是用MS SQL做的,在MS SQL.ORACLE里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
- ROW_NUMBER() OVER函数的基本用法用法
ROW_NUMBER() OVER函数的基本用法用法 转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法 ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
转载:https://www.cnblogs.com/alsf/p/6344197.html 1.row_number() over()排序功能: (1) row_number() over()分组排 ...
- mysql、MS SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是MySQL,之前看到的参考例子是用MS SQL做的,在MS SQL.Oracle里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
- ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)
1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...
- 总结distinct、group by 、row_number()over函数用法及区别
distinct和group by 是一样的,查询去重,只能是全部重复的,也可以理解为针对单例,因为一行有一个字段不一样,他们就会认为这两行内容是不重复的.但是使用row_number()over这个 ...
- sql ROW_NUMBER() 排序函数 (转)
1使用row_number()函数进行编号:如 select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Cus ...
- ROW_NUMBER() OVER函数的用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) partition 划分,分割 --ROW_NUMBER() 就是生成一个有顺序的行 ...
- ROW_NUMBER() OVER函数的基本用法
转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法:ROW_NUMBER() OVER(PARTITIO ...
随机推荐
- 【转】Mysql两种存储引擎的异同【MyISAM和InnoDB】
MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以 ...
- java 多线程2:Thread的实例方法
Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...
- mysql too many max_connections
debian 环境 mysql MySQL Community Server 5.6.27 首先修改 my.cnf文件 全局查找 find / -name my.cnf* [mysqld] 配置 ...
- Java中数据库连接池原理机制的详细讲解
连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...
- thrift与protobuffer的区别
thrift由facebook出品,protobuffer由google出品: 下面对比一下这两个的区别.参考:http://zhidao.baidu.com/link?url=yNLBeHhWokf ...
- acrobat-网格-参考线-网格大小设置
视图--显示/隐藏--标尺及网格-网格/标尺: 网格:ctrl+U 标尺:ctrl+R 标尺: 网格: 标尺+网格: 网格大小设置: 编辑--首选项-单位和参考线 2013 ...
- 【WPF】Button按钮添加背景图片
只是想做一个很简单的图片按钮而已,不需要那么复杂. <Button x:Name="btn" Width="145" Height="30&qu ...
- linux内存查看及释放
查看内存 常用的查看内存工具有:top,ps,free,/proc/meminfo,/proc/$PID/status等,一般都指定了虚拟内存占用情况,但ps或/proc/$PID/status中RS ...
- socket数据收发
socket读写 TCP协议是面向流的,read和write调用的返回值往往小于参数指定的字节数.对于read调用,如果接收缓冲区中有20字节,请求读100个字节,就会返回20.对于write调用,如 ...
- jffs2制作与烧写
JFFS2全名是Journalling Flash File System Version2.最早只支持Nor Flash,自2.6版以后开始支持Nand Flash. JFFS2是Flash上应用最 ...