Oracle修炼路程--分页查询

一 TOP-N问题

--取出工资最高的5五名员工信息;
--第一步:首选对员工信息按照sal进行降序;
SQL> select *from emp order by sal desc;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-11-81           7000                    10
      7566 JONES      MANAGER         7839 02-4-81           4575                    20
      7698 BLAKE      MANAGER         7839 01-5-81           4450                    30
      7782 CLARK      MANAGER         7839 09-6-81           4050                    10
      7788 SCOTT      ANALYST         7566 19-4-87           3400                    20
      7902 FORD       ANALYST         7566 03-12-81           3400                    20
      7499 ALLEN      SALESMAN        7698 20-2-81           2000        300         30
      7844 TURNER     SALESMAN        7698 08-9-81           1900                    30
      7934 MILLER     CLERK           7782 23-1-82           1700                    10
      7654 MARTIN     SALESMAN        7698 28-9-81           1650       1400         40
      7521 WARD       SALESMAN        7698 22-2-81           1650        500         30
      7876 ADAMS      CLERK           7788 23-5-87           1500                    20
      7900 JAMES      CLERK           7698 03-12-81           1350                    30
      7369 SMITH      CLERK           7902 17-12-80           1200                    20

已选择14行。

--第二步:运用rownum,取出前五名最高工资的员工信息;
SQL> select rownum,t.* from (select *from emp order by sal desc) t where rownum<=5;

    ROWNUM      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
         1       7839 KING       PRESIDENT            17-11-81           7000                    10
         2       7566 JONES      MANAGER         7839 02-4-81           4575                    20
         3       7698 BLAKE      MANAGER         7839 01-5-81           4450                    30
         4       7782 CLARK      MANAGER         7839 09-6-81           4050                    10
         5       7788 SCOTT      ANALYST         7566 19-4-87           3400                    20

关于rownum有以下主要特点:

1)rownum不属于任何表。
2)rownum存在的前提,先有结果表。
3)rownum总是从1开始。
4)rownum一般只和<(<=)一起用。
5)使用rownum进行分页查询需要把rownum转化为实列,并针对rownum查询。

二、分页查询

--查询工资最高的第5--第10名员工信息;
SQL> select *from (select rownum as rn,t.* from (select *from emp order by sal desc) t where rownum<=10) e where e.rn>=5;

        RN      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
         5       7788 SCOTT      ANALYST         7566 19-4-87           3400                    20
         6       7902 FORD       ANALYST         7566 03-12-81           3400                    20
         7       7499 ALLEN      SALESMAN        7698 20-2-81           2000        300         30
         8       7844 TURNER     SALESMAN        7698 08-9-81           1900                    30
         9       7934 MILLER     CLERK           7782 23-1-82           1700                    10
        10       7521 WARD       SALESMAN        7698 22-2-81           1650        500         30

已选择6行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值