Oracle分析函数学习笔记1

王朝oracle·作者佚名  2006-01-10
宽屏版  字体: |||超大  

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

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

1.row_number() 的使用

原表信息:

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行。

使用row_number()查出各部门薪水最高的三个员工姓名、薪水,多于三个的只取三个。

SQL> select * from (

2 select deptno,row_number() over(partition by deptno order by sal desc) rw,ename,sal

3 from emp

4 )

5 where rw<=3;

DEPTNO RW ENAME SAL

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

10 1 KING 5000

2 CLARK 2450

3 MILLER 1300

20 1 SCOTT 3000

2 FORD 3000

3 JONES 2975

30 1 BLAKE 2850

2 ALLEN 1600

3 TURNER 1500

已选择9行。

体会:row_number() 返回的主要是“行”的信息,并没有按照sal排名,如

20 1 SCOTT 3000

2 FORD 3000

scott与ford薪水一样多,ford前面的2仅仅是行数、记录条数的感念。

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