程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 2.oracle分頁,找到員工表中薪水大於本部門平均薪水的員工

2.oracle分頁,找到員工表中薪水大於本部門平均薪水的員工

編輯:Oracle教程

2.oracle分頁,找到員工表中薪水大於本部門平均薪水的員工


ROWNUM的知識點

A ROWNUM按照oracle的默認機制生成。

B rownum只能使用<= <號,不能使用> >=

rownum的實現機制

rownum表示,返回的結果集的行號(是一個屬性,固化到一行之中,不會因為你排序,而發生變化)。沒有第一行,就沒有第二行;沒有第二行就沒有第三行。

Oracle Top-N

select rownum,empno,ename,sal

from (select empno,ename,sal

from emp

order by sal desc)

where rownum <= 3;

\

 

4 求5=<x<=8之間的數據(分頁)

select r,empno,ename,sal

from

(

select rownum r,empno,ename,sal

from (

select empno,ename,sal

from emp

order by sal desc

)

where rownum <=8

)

where r >= 5;

\

 

總結:內存排序,外層選

Oracle分頁思想總結:

(內層排序,外層選,需要三層查詢)

內:排序

中:使用rownum選擇前n條;並給rownum指定一個別名,以供最外層過濾使用。

外:去掉前m條結果。

找到員工表中薪水大於本部門平均薪水的員工

員工表 本部門平均薪水

思路1:查員工的薪水 本部門平均薪水

本部門關系

要去本部門的薪水,需要求部門的薪水,要對部門分組è分組

思路2:查找員工表和 部門薪水表 =====》多表查詢

思路3:等值連接條件

方法1:

select e.empno,e.ename,e.sal,d.avgsal

from emp e,

(select deptno,avg(sal) avgsal

from emp

group by deptno) d

where e.deptno=d.deptno and e.sal > d.avgsal;

\

 

方法2

相關子查詢:主查詢的參數,讓子查詢用,一般是通過別名技術。

一般子查詢:子查詢的結果,被主查詢使用

select empno,ename,sal,(select avg(sal) from emp where deptno = e.deptno) avgsal

from emp e

where sal > (

select avg(sal)

from emp

where deptno = e.deptno

);

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved