美文网首页
SQL查询语句3

SQL查询语句3

作者: 发觉原来我只是250 | 来源:发表于2017-07-11 19:05 被阅读0次

    3、 列出薪金比“SMITH”或“ALLEN”多的所有员工的编号、姓名、部门名称,其领导姓名,部门人数,平均工资、最高及最低工资。

    ◆ 确定要使用的数据表:

    ● emp表:员工的编号、姓名。

    ● dept表:部门名称。

    ● emp表:领导信息。

    ● emp表:统计部门数据。

    ◆ 确定已知的关联字段:

    ● 雇员和部门:emp.deptno = dept.deptno

    ● 雇员和领导:emp.mgr = memp.empno

    第一步:找到“SMITH”和“ALLEN”的薪金

    SELECT sal FROM emp WHERE ename IN('SMITH', 'ALLEN') ;

    第二步:以上的查询返回多行单列数据,应该在WHERE子句之中使用它

    SELECT e.empno, e.ename, e.sal

    FROM emp e

    WHERE sal>ANY(

    SELECT sal FROM emp WHERE ename IN('SMITH', 'ALLEN') )

    AND e.ename NOT IN('SMITH', 'ALLEN') ;

    第三步:找到部门名称、领导姓名

    SELECT e.empno, e.ename, e.sal, d.dname, m.ename

    FROM emp e, dept d, emp m

    WHERE e.sal>ANY(

    SELECT sal FROM emp WHERE ename IN('SMITH', 'ALLEN') )

    AND e.ename NOT IN('SMITH', 'ALLEN')

    AND e.deptno=d.deptno

    AND e.mgr=m.empno(+) ;

    第四步:统计部门的信息,在FROM子句之中完成

    SELECT e.empno, e.ename, e.sal, d.dname, m.ename, temp.count, temp.avg, temp.max, temp.min

    FROM emp e, dept d, emp m, (

    SELECT deptno dno, COUNT(empno) count, AVG(sal) avg, MAX(sal) max, MIN(sal) min

    FROM emp

    GROUP BY deptno ) temp

    WHERE e.sal>ANY(

    SELECT sal FROM emp WHERE ename IN('SMITH', 'ALLEN') )

    AND e.ename NOT IN('SMITH', 'ALLEN')

    AND e .deptno=d.deptno

    AND e.mgr=m.empno(+)

    AND temp.dno=d.deptno ;

    相关文章

      网友评论

          本文标题:SQL查询语句3

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