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

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

环境: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

2

from emp

3

order by deptno,sal desc;

DEPTNO ENAME

SAL

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

10 KING

5000

CLARK

2450

MILLER

1300

20 SCOTT

3000

FORD

3000

JONES

2975

ADAMS

1100

SMITH

800

30 BLAKE

2850

ALLEN

1600

TURNER

1500

WARD

1250

MARTIN

1250

JAMES

950

已选择14行。

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

SQL select * from (

2

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

3

from emp

4

)

5

where rk

6

/

DEPTNO

RK ENAME

SAL

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

10

1 KING

5000

2 CLARK

2450

3 MILLER

1300

20

1 SCOTT

3000

1 FORD

3000

3 JONES

2975

30

1 BLAKE

2850

2 ALLEN

1600

3 TURNER

1500

已选择9行。

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

SQL select * from (

2

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

3

from emp

4

)

5

where drk

6

/

DEPTNO

DRK ENAME

SAL

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

10

1 KING

5000

2 CLARK

2450

3 MILLER

1300

20

1 SCOTT

3000

1 FORD

3000

2 JONES

2975

3 ADAMS

1100

30

1 BLAKE

2850

2 ALLEN

1600

3 TURNER

1500

已选择10行。

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