• Oracle练习题


    1、列出至少有一个员工的所有部门

    select count(empno),d.deptno
    from emp e,dept d
    where e.deptno(+)=d.deptno
    group by d.deptno
    having count(empno)>=1;

    参考答案:
    select *
    from dept
    where deptno in(
    select deptno from emp group by deptno having count(*)>1
    );

    2、列出薪金比“SMITH”多的所有员工。

    select empno,ename,job,sal
    from emp
    where sal>(
    select sal
    from emp
    where ename='SMITH'
    );


    3、列出所有员工的姓名及其直接上级的姓名。

    select e.ename,e.empno,p.ename mgrname ,p.empno mgrempno
    from emp e,emp p
    where p.empno(+)=e.mgr;


    4、列出受雇日期早于其直接上级的所有员工。


    select e.ename,p.ename mgrname ,e.hiredate,p.hiredate mgrhiredate
    from emp e,emp p
    where e.hiredate < p.hiredate
    and p.empno(+)=e.mgr;


    5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

    select d.deptno ,d.dname ,e.empno,e.ename ,e.job,e.mgr ,e.sal
    from emp e,dept d
    where d.deptno=e.deptno(+);

    6、列出所有“CLERK”(办事员)的姓名及其部门名称。

    select d.dname,temp.ename,temp.deptno
    from dept d ,(
    select deptno ,ename
    from emp
    where job='CLERK'
    ) temp
    where temp.deptno=d.deptno;

    参考答案:
    select dname,ename
    from dapt a,emp b
    where a.deptno=b.deptno
    and job='CLERK'


    7、列出最低薪金大于1500的各种工作。

    select job ,min(sal) msal
    from emp
    group by job
    having min(sal)>1500;


    8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
    dept:部门信息
    emp:员工信息

    select ename
    from emp
    where deptno=(
    select deptno
    from dept
    where dname='SALES'
    );


    9、列出薪金高于公司平均薪金的所有员工。

    select *
    from emp
    where sal>(
    select AVG(sal)
    from emp
    );


    10、列出与“SCOTT”从事相同工作的所有员工。
    emp:工作信息、员工信息

    select *
    from emp
    where job=(
    select job
    from emp
    where ename='SCOTT'
    );

    11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

    select ename ,sal
    from emp
    where sal in(
    select sal
    from emp
    where deptno=30
    );


    12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

    select ename ,sal
    from emp
    where sal >all(
    select sal
    from emp
    where deptno=30
    );


    13、列出在每个部门工作的员工数量、平均工资和平均服务期限。

    select deptno,count(empno) count ,AVG(sal) avgsal ,AVG(months_between(sysdate,hiredate)/12) avgyear
    from emp
    group by deptno;

    14、列出所有员工的姓名、部门名称和工资。

    select e.ename ,e.sal ,d.dname
    from dept d,emp e
    where d.deptno=e.deptno;


    15、列出所有部门的详细信息和部门人数。


    select d.deptno ,d.dname ,d.loc ,temp.count
    from dept d, (
    select count(empno) count ,deptno
    from emp
    group by deptno
    ) temp
    where temp.deptno=d.deptno;

    参考答案:select a.*,(s elect count(*) from emp where
    deptno=a.deptno) tot from dept a ;

    16、列出各种工作的最低工资。

    select job ,min(sal)
    from emp
    group by job;


    17、列出各个部门的MANAGER(经理)的最低薪金。
    select deptno, min(sal)
    from emp
    where job='MANAGER'
    group by deptno;


    18、列出所有员工的年工资,按年薪从低到高排序。
    select empno,ename , job ,sal*12 yearsal
    from emp
    order by sal*12;

  • 相关阅读:
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业02
    Django连接MySql数据库
    asyncio异步编程
    Django-rest framework框架
    Git版本管理工具详细教程
    MySQL的sql_mode模式说明及设置
  • 原文地址:https://www.cnblogs.com/Etude/p/9279737.html
Copyright © 2020-2023  润新知