美文网首页程序员
第一部分 SQL语句练习题

第一部分 SQL语句练习题

作者: 孙浩j | 来源:发表于2017-12-02 16:54 被阅读168次

    1.查询本部门大于平均工资的员工信息

    SELECT *
    from emp,
    (SELECT AVG(sal) avg_sal,deptno
    from emp
    GROUP BY deptno)a
    WHERE emp.sal>a.avg_sal and a.deptno=emp.deptno
    

    第一步:先运用子查询查询出每个部门的平均工资,并把查询结果当成一张表
    第二步:通过部门号连接子表和主表,查询出主表中大于子表中平均工资的员工信息

    2.找出平均工资最高的部门编号

    SELECT AVG(sal) avg_sal
    FROM emp
    GROUP BY deptno
    ORDER BY avg_sal DESC
    LIMIT 0,1
    

    3.选择姓名中有字母A和E的员工姓名where ename LIKE '%A%' OR '%E%' 表示的是一定有A,但是E可有可无

    SELECT ename FROM emp where ename LIKE '%A%' OR ename LIKE'%E%'
    
    ``
    
    4.平均薪水最高的部门编号
    
    

    select deptno
    from
    (select avg(sal) avg_sal,deptno from emp group by deptno)
    where avg_sal=
    (select max(avg_sal) from
    (select avg(sal) avg_sal,deptno from emp group by deptno))
    //可以写成max(avg(sal))

    
    步骤:先找出每个部门的平均薪水,再找出平均薪水里的最大值,在找出当平均薪水等于最大值时候的部门编号
    注:为什么不同时找平均薪水最大值和部门编号呢?因为最大值只有一个,而可能有多个部门具有最高平均薪水
    
    注:如果查询层有聚合函数,最好这一次查询不再查询其它内容,因为聚合函数对应的值可能不止一个,而和聚合函数一起输出的话,另一个查询的值也只能有一个,导致了误差的出现
    
    5.求比普通员工最高工资高的经理人名称
    
    先求普通员工最高工资,再求经理人工资比最高工资高的
    

    SELECT ename,sal
    from emp
    WHERE empno in (select mgr from emp WHERE mgr is not null) AND sal>
    (SELECT max(sal)
    from emp
    WHERE empno not in
    (select mgr from emp WHERE mgr is not null))

    相关文章

      网友评论

        本文标题:第一部分 SQL语句练习题

        本文链接:https://www.haomeiwen.com/subject/kxewvxtx.html