Orcle基本语句(五)分页查询


1 --分页查询---begin
2 --sqlserver top
3 --mysql limit
4 --oracle rownum(伪列),oracle中伪列(rownum,rowid)

 

1 --查询工资为前五的信息
 2 SELECT ROWNUM,tmp.* FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) tmp;
 3 --查询工资在第6条至第12条的信息
 4 --方法一:
 5 --1.查询在前12(包含第12条)的信息
 6 SELECT sal FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) WHERE ROWNUM <=12;
 7 --2.查询在前6(包含第六条)的信息
 8 SELECT sal FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) WHERE ROWNUM <=5;
 9 --3.
10 SELECT ROWNUM, tmp.*
11   FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC) tmp
12  WHERE sal IN
13        (SELECT sal
14           FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC)
15          WHERE rownum <= 12)
16    AND sal NOT IN
17        (SELECT sal
18           FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC)
19          WHERE rownum <= 5);
20 --方法二:嵌套子查询
21 SELECT tem.*
22   FROM (SELECT rownum r, tmp.*
23           FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC) tmp) tem
24  WHERE tem.r BETWEEN 6 AND 12;
25
 1 --查询工资最高的第6条到第12条的员工信息 
 2 --1.
 3 SELECT *
 4   FROM (SELECT rownum row_top ,tt.*
 5           FROM (SELECT e.*
 6                   FROM employees e
 7                  WHERE e.salary IS NOT NULL
 8                  ORDER BY salary DESC) tt)
 9  WHERE row_top BETWEEN 6 AND 12;
10 --2. 效率较于1
11 SELECT *
12   FROM (SELECT rownum row_top, tt.*
13           FROM (SELECT rownum rn, e.*
14                   FROM employees e
15                  WHERE e.salary IS NOT NULL
16                  ORDER BY salary DESC) tt)
17  WHERE row_top <= 12
18    AND row_top >= 6;
19 --3.效率较于2---推荐使用
20 SELECT *
21   FROM (SELECT rownum rn, tt.*
22           FROM (SELECT *
23                   FROM employees e
24                  WHERE e.salary IS NOT NULL
25                  ORDER BY salary DESC) tt
26          WHERE rownum <= 12)
27  WHERE rn >= 6

 

26 --视图
27 --查询全部的20号 部门的雇员信息(雇员编号,姓名,工作,雇佣日期)
28 CREATE OR REPLACE VIEW view20 AS SELECT empno, ename, job, hiredate FROM emp WHERE deptno = 20;  
29 --创建视图v_dept:查询每个部门的编号,名称,员工人数,员工工资总和
30 CREATE OR REPLACE VIEW v_dept AS 
31 SELECT e.deptno,d.dname,COUNT(e.empno) c, SUM(e.sal) s
32   FROM emp e
33   FULL JOIN dept d
34     ON e.deptno = d.deptno
35  GROUP BY e.deptno,d.dname;
36 
37 SELECT * FROM v_dept WHERE c >= 3;
38 SELECT Count(*) from emp;

 

posted on 2017-01-04 14:07  知止而后有定  阅读(476)  评论(0)    收藏  举报

导航