rank() over
来源:互联网 发布:达内linux视频 百度云 编辑:程序博客网 时间:2024/06/05 01:05
1、partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。
2、Rank 是在每个分组内部进行排名的。
例如:查询emp表中每个部门中工资前三名的员工的全部字段
SQL> select * from (select e.*,rank() over (partition by deptno order by sal) rk from emp e) t1 where t1.rk<=3;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RK
----- ---------- --------- ------- -------------- ------ ------ ------ ----------
已选择9行。
rank和dense_rank
根据order by的内容依次赋予递增序列
rank 和 dense_rank区别:
他们遇到相同值不会递增 都显示当前序列值
遇到相同值rank会跳号,dense_rank不跳号
但下一个不同的值出现时:
rank: 会累计
dense_rank:不会累计
SQL> select * from (select e.*,dense_rank() over (partition by deptno order by sal) rk from emp e) t1 where t1.rk<=3;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RK
----- ---------- --------- ----- ----------- --------- --------- ------ ----------
7934 MILLER CLERK 7782 1982/1/23 1300.00 10 1
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 2
7839 KING PRESIDENT 1981/11/17 5000.00 10 3
7369 SMITH CLERK 7902 1980/12/17 800.00 20 1
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20 2
7566 JONES MANAGER 7839 1981/4/2 2975.00 20 3
7900 JAMES CLERK 7698 1981/12/3 950.00 30 1
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30 2
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30 2
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30 3
10 rows selected
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RK
----- ---------- --------- ----- ----------- --------- --------- ------ ----------
7934 MILLER CLERK 7782 1982/1/23 1300.00 10 1
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 2
7839 KING PRESIDENT 1981/11/17 5000.00 10 3
7369 SMITH CLERK 7902 1980/12/17 800.00 20 1
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20 2
7566 JONES MANAGER 7839 1981/4/2 2975.00 20 3
7900 JAMES CLERK 7698 1981/12/3 950.00 30 1
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30 2
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30 2
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30 3
10 rows selected
0 0
- rank over()
- rank() over
- rank() over和row_number() over
- Rank() OVER(PARTITION BY)
- rank/row_number() OVER ()使用
- Rank() over()的用法
- Rank() over()的用法
- Rank() over()的用法
- mysql 之 rank() over()
- rank() over()的用法
- Oracle Rank() Over()
- Rank() over()的用法
- Rank() over()的用法
- Rank() over的用法
- oracle rank() over()
- Rank() over()详解
- SQL: rank over
- Oracle Rank() Over()
- Linux FrameBuffer分析之编写基于FrameBuffer接口的应用程序
- 最长上升子序列
- 理解range()基本用法:
- 运行 Unix网络编程 中的第一个例子 时间日期例子
- python学习2
- rank() over
- Linux 查看cpu等
- wicket forward a url
- 通补合计程序
- 第一课:android的事件处理(基于监听)
- 鸡肋的JdbcRDD
- Android4.0之后系统通知栏icon显示不全问题
- 母函数例题 可做模版 附注释
- kth-rgbd程序使用注意事项