Oracle分析函数学习笔记1
2005-08-04 16:39
645 查看
环境: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仅仅是行数、记录条数的感念。
目的:以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仅仅是行数、记录条数的感念。
相关文章推荐
- 29.Oracle深度学习笔记——分析函数
- Oracle分析函数学习笔记
- 29.Oracle深度学习笔记——分析函数
- Oracle分析函数学习笔记3
- Oracle 11g学习笔记--分析函数
- 学习Oracle分析函数(Analytic Functions)
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- oracle分析函数之rank学习记录
- ORACLE数据库常用函数学习笔记(持续更新...)
- oracle 存储过程和函数学习笔记
- Oracle 分析函数学习(二)
- 学习笔记_oracle——过程函数触发器
- 教为学:Oracle SQL学习之路(二):分析函数之相邻
- C语言学习笔记29——函数与宏分析
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- Oracle 学习笔记14 —— 函数
- ORACLE PL/SQL子程序--过程和函数学习笔记
- Linux netfilter 学习笔记 之六 ip层netfilter的filter表的创建及其hook函数分析
- Oracle角色,函数,循环的分析学习
- 学习oracle函数使用的笔记