您的位置:首页 > 数据库 > Oracle

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

2016-03-24 17:32 686 查看
记录: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: