zoukankan      html  css  js  c++  java
  • 2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工

    
    1. ROWNUM的知识点

      A ROWNUM依照oracle的默认机制生成。

      B rownum仅仅能使用<=  <号,不能使用>  >=

    2. rownum的实现机制

      rownum表示,返回的结果集的行号(是一个属性,固化到一行之中。不会由于你排序,而发生变化)。没有第一行,就没有第二行;没有第二行就没有第三行。

    3. 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. 找到员工表中薪水大于本部门平均薪水的员工

      员工表   本部门平均薪水

      思路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

    );

     

     

  • 相关阅读:
    外媒评Mate 10 Pro:智慧拍照惊人,续航能力卓越
    pv(PageView)的解释
    pv(PageView)的解释
    pv(PageView)的解释
    pv(PageView)的解释
    对包含HttpContext.Current.Cache的代码进行单元测试
    读取excel模板填充数据 并合并相同文本单元格
    css
    Aragon:以太坊上的去中心化自治组织管理应用
    Futarchy: 对价值投票,对赌信念
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7251840.html
Copyright © 2011-2022 走看看