Oracle提供的序号函数:
以emp表为例:
1: rownum 最简单的序号 但是在order by之前就确定值.
select rownum,t.* from emp t order by ename

  行数 ROWNUM EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 11 7876 ADAMS CLERK 7788 1987-5-23 1100   20
2 2 7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
3 6 7698 BLAKE MANAGER 7839 1981-5-1 2850   30
4 7 7782 CLARK MANAGER 7839 1981-6-9 2450   10
5 13 7902 FORD ANALYST 7566 1981-12-3 3000   20
6 12 7900 JAMES CLERK 7698 1981-12-3 950   30
7 4 7566 JONES MANAGER 7839 1981-4-2 2975   20
8 9 7839 KING PRESIDENT   1981-11-17 5000   10
9 5 7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
10 14 7934 MILLER CLERK 7782 1982-1-23 1300   10
11 8 7788 SCOTT ANALYST 7566 1987-4-19 3000   20
12 1 7369 SMITH CLERK 7902 1980-12-17 800   20
13 10 7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
14 3 7521 WARD SALESMAN 7698 1981-2-22 1250 500 30

2: row_number() over( order by 字段名1,字段名2,...字段名n ) 先排序再确定序号.
select row_number() over( order by ename ) as rm, t.* from emp t

   行数 RM EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 1 7876 ADAMS CLERK 7788 1987-5-23 1100   20
2 2 7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
3 3 7698 BLAKE MANAGER 7839 1981-5-1 2850   30
4 4 7782 CLARK MANAGER 7839 1981-6-9 2450   10
5 5 7902 FORD ANALYST 7566 1981-12-3 3000   20
6 6 7900 JAMES CLERK 7698 1981-12-3 950   30
7 7 7566 JONES MANAGER 7839 1981-4-2 2975   20
8 8 7839 KING PRESIDENT   1981-11-17 5000   10
9 9 7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
10 10 7934 MILLER CLERK 7782 1982-1-23 1300   10
11 11 7788 SCOTT ANALYST 7566 1987-4-19 3000   20
12 12 7369 SMITH CLERK 7902 1980-12-17 800   20
13 13 7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
14 14 7521 WARD SALESMAN 7698 1981-2-22 1250 500 30

3: 和上面的不同之处在于PARTITION分区.在每一个小分区内部取序号.
select row_number() over(PARTITION BY deptno order by sal ) as rm, t.* from emp t

   行数 RM EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 1 7934 MILLER CLERK 7782 1982-1-23 1300   10
2 2 7782 CLARK MANAGER 7839 1981-6-9 2450   10
3 3 7839 KING PRESIDENT   1981-11-17 5000   10
4 1 7369 SMITH CLERK 7902 1980-12-17 800   20
5 2 7876 ADAMS CLERK 7788 1987-5-23 1100   20
6 3 7566 JONES MANAGER 7839 1981-4-2 2975   20
7 4 7788 SCOTT ANALYST 7566 1987-4-19 3000   20
8 5 7902 FORD ANALYST 7566 1981-12-3 3000   20
9 1 7900 JAMES CLERK 7698 1981-12-3 950   30
10 2 7521 WARD SALESMAN 7698 1981-2-22 1250 500 30
11 3 7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
12 4 7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
13 5 7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
14 6 7698 BLAKE MANAGER 7839 1981-5-1 2850   30

4: rank()在这里表示针对每个部门员工的工资取序号.
select rank() over(PARTITION BY deptno order by sal ) as rnk, t.* from emp t;

   行数 RNK EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 1 7934 MILLER CLERK 7782 1982-1-23 1300   10
2 2 7782 CLARK MANAGER 7839 1981-6-9 2450   10
3 3 7839 KING PRESIDENT   1981-11-17 5000   10
4 1 7369 SMITH CLERK 7902 1980-12-17 800   20
5 2 7876 ADAMS CLERK 7788 1987-5-23 1100   20
6 3 7566 JONES MANAGER 7839 1981-4-2 2975   20
7 4 7788 SCOTT ANALYST 7566 1987-4-19 3000   20
8 4 7902 FORD ANALYST 7566 1981-12-3 3000   20
9 1 7900 JAMES CLERK 7698 1981-12-3 950   30
10 2 7521 WARD SALESMAN 7698 1981-2-22 1250 500 30
11 2 7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
12 4 7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
13 5 7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
14 6 7698 BLAKE MANAGER 7839 1981-5-1 2850   30

5: 从例子中可以看到dense_rank()和rank()的唯一区别就是:
dense_rank()中并列第二名后是第三名.
rank()中并列第二名后是第四名.
select dense_rank() over(PARTITION BY deptno order by sal ) as dense_rnk, t.* from emp t;

   行数 DENSE_RNK EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 1 7934 MILLER CLERK 7782 1982-1-23 1300   10
2 2 7782 CLARK MANAGER 7839 1981-6-9 2450   10
3 3 7839 KING PRESIDENT   1981-11-17 5000   10
4 1 7369 SMITH CLERK 7902 1980-12-17 800   20
5 2 7876 ADAMS CLERK 7788 1987-5-23 1100   20
6 3 7566 JONES MANAGER 7839 1981-4-2 2975   20
7 4 7788 SCOTT ANALYST 7566 1987-4-19 3000   20
8 4 7902 FORD ANALYST 7566 1981-12-3 3000   20
9 1 7900 JAMES CLERK 7698 1981-12-3 950   30
10 2 7521 WARD SALESMAN 7698 1981-2-22 1250 500 30
11 2 7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
12 3 7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
13 4 7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
14 5 7698 BLAKE MANAGER 7839 1981-5-1 2850   30

Oracle 序号函数的更多相关文章

  1. MSSQL和Oracle常用函数比对

    数学函数 序号 函数功能 SQL Server用法 Oracle用法 1 绝对值 select abs(-1) value select abs(-1) value from dual 2 取整(大) ...

  2. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  3. oracle add_months函数

    oracle add_months函数 add_months 函数主要是对日期函数进行操作,举例子进行说明 add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为 ...

  4. Oracle to_date()函数的用法

    Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...

  5. Oracle over函数

    Oracle over函数   SQL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DE ...

  6. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  7. Oracle SQL函数

    Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...

  8. Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

  9. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

随机推荐

  1. Coursera,Udacity,Edx 课程列表(更新ing)

    Coursera,Udacity,Edx 课程列表(更新ing) Coursera有很多特别好的课程,平时没有机会听到国外大牛的课程,通过Coursera算是可以弥补一下吧,国外的课程普遍比国内的老师 ...

  2. C++Primer 5th Chap2 Variables and basic Types

    wchar_t,char16_t,char32_t用于拓展字符集 char和signed char并不一样,由编译器决定类型char表现上述两种中的哪一种 一般long的大小和int无二,如果超过in ...

  3. SSH协议介绍

    SSH概念介绍 SSH是一种网络协议,我们常说的 ssh 一般指其实现,即 OpenSSH,在 shell 中,也就是 ssh 命令. Secure Shell(安全外壳协议,简称SSH)是一种加密的 ...

  4. Python之TensorFlow的数据的读取与存储-2

    一.我们都知道Python由于GIL的原因导致多线程并不是真正意义上的多线程.但是TensorFlow在做多线程使用的时候是吧GIL锁放开了的.所以TensorFlow是真正意义上的多线程.这里我们主 ...

  5. C# CheckBoxList绑定值,设置及获取

    前端页面:.aspx <asp:CheckBoxList ID="ckbdot" runat="server" RepeatDirection=" ...

  6. K8S conul部署

    官网有Helm方式的安装文档(https://www.consul.io/docs/platform/k8s/index.html) 一,准备工作: 1,k8s环境 2,nfs服务器 二,创建PV n ...

  7. IdentityServer4实现OAuth2.0四种模式之客户端模式

    一,准备内容 IdentityServer4 是Asp.net core的一个中间件,用于添加符合OpenId Connect和OAuth2.0规范的终端到Asp.net Core应用.在这里简单介绍 ...

  8. UML软件工程第一次实验

    顶层设计 UC1诊所设备管理 UC1.1 统计设备使用情况 用况标识号 UC1.1 用况名称 统计设备使用情况 创建者 派克 创建时间 2017-9-25 参与者 客户 说明 客户需要知道自己诊所设备 ...

  9. 修改redhat7默认显示语言从中文为英文

    [delmore@localhost Desktop]$ su                               //切换到最高权限 Password:                    ...

  10. PHP/Python---百钱百鸡简单实现及优化

    公鸡5块钱一只,母鸡3块钱一只,小鸡一块钱3只,用100块钱买一百只鸡,问公鸡,母鸡,小鸡各要买多少只? 今天看到这题很简单 ,但是随手写出来后发现不是最优的