ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)。

举例:

SQL> DESC T1;

Name                                           Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                    NUMBER
NAME                                                    VARCHAR2(10)
DATE1                                                    DATE

SQL> SELECT * FROM T1;
        ID NAME                           DATE1
---------- ------------------------------ ------------------
       101 aaa                                  09-SEP-13

101 bbb                                  10-SEP-13

101 ccc                                  11-SEP-13

102 ddd                                  08-SEP-13

102 eee                                  11-SEP-13

SQL> SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as RN FROM T1;

ID NAME               DATE1               RN
---------- ------------------------------ ------------------ ----------
       101 ccc                  11-SEP-13              1
       101 bbb                  10-SEP-13              2
       101 aaa                  09-SEP-13              3
       102 eee                  11-SEP-13              1
       102 ddd                  08-SEP-13              2

把上面语句作为一个子表语句,嵌入到另一条语句中:

SQL> SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER()
OVER(partition by ID order by DATE1 desc) as RN FROM T1)T WHERE T.RN=1;

ID NAME                           DATE1
---------- ------------------------------ ------------------
       101 ccc                                  11-SEP-13
       102 eee                                  11-SEP-13

最新文章

  1. Linux下搭建coreseek(sphinx+mmseg3)全文检索
  2. css3水波纹效果
  3. css 分享之background-attachment 属性
  4. easyui加载datagrid时随着窗体大小改变而改变
  5. 【BZOJ】2078: [POI2004]WYS
  6. ANDROID_MARS学习笔记_S02_008_ANIMATION第二种使用方式:xml
  7. Learning WCF Chapter1 Generating a Service and Client Proxy
  8. 论docker中 CMD 与 ENTRYPOINT 的区别
  9. Codeforces 339E
  10. leetcode解析回文子串拆分
  11. pandas.read_csv参数详解
  12. 解析web应用处理流程
  13. junit 基础使用
  14. Asp.Net Core基于Cookie实现同域单点登录(SSO)
  15. 转:.NET基础篇——反射的奥妙
  16. style和getComputedStyle(ff)和currentStyle
  17. Django本地开发,debug模式引用静态文件
  18. order by中用子查询排序
  19. [转]Hibernate入门:批量插入数据
  20. Spark操作

热门文章

  1. sql 2008数据事务日志已满处理方法
  2. java 从零开始 第三天
  3. 全自动安装mongoDB数据库的shell脚本
  4. python spark
  5. vim编辑器常规配置
  6. hadoop自带例子SecondarySort源码分析MapReduce原理
  7. [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
  8. pathinfo()的用法
  9. EntityFramework 学习 一 Entity Framework 查询设计
  10. 关于spring事务注解