新手上路:Oracle分析函数学习笔记二

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

环境:windows 2000 server + Oracle8.1.7 + sql*plus

目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。

2.rank()、dense_rank() 的使用

原表信息:

SQL

break on deptno skip 1-- 为效果更明显,把不同部门的数据隔段显示。

SQL select deptno,ename,sal

2from emp

3order by deptno,sal desc;

DEPTNO ENAME SAL

---------- ---------- ----------

10 KING 5000

CLARK2450

MILLER 1300

20 SCOTT3000

FORD 3000

JONES2975

ADAMS1100

SMITH 800

30 BLAKE2850

ALLEN1600

TURNER 1500

WARD 1250

MARTIN 1250

JAMES 950

已选择14行。

使用rank()查出各部门薪水前三名的员工姓名、薪水。

SQL select * from (

2select deptno,rank() over(partition by deptno order by sal desc) rk,ename,sal

3from emp

4)

5where rk

6/

DEPTNO RK ENAME SAL

---------- ---------- ---------- ----------

101 KING 5000

2 CLARK2450

3 MILLER 1300

201 SCOTT3000

1 FORD 3000

3 JONES2975

301 BLAKE2850

2 ALLEN1600

3 TURNER 1500

已选择9行。

使用dense_rank()查出各部门薪水前三名的员工姓名、薪水。

SQL select * from (

2select deptno,dense_rank() over(partition by deptno order by sal desc) drk,ename,sal

3from emp

4)

5where drk

6/

DEPTNODRK ENAME SAL

---------- ---------- ---------- ----------

101 KING 5000

2 CLARK2450

3 MILLER 1300

201 SCOTT3000

1 FORD 3000

2 JONES2975

3 ADAMS1100

301 BLAKE2850

2 ALLEN1600

3 TURNER 1500

已选择10行。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航