• Oracle第二课(作业)



    --部门表department
    --DID NUMBER(4),    部门编号
    --DNAME VARCHAR2(20),部门名词
    --员工表employee
    --EID NUMBER(4), 员工编号
    --ENAME VARCHAR2(20), 员工姓名
    --DID NUMBER(4), 部门编号
    --SALARY NUMBER(40, 员工薪水


    --建立部门表
    CREATE TABLE JUL12_DEPARTMENT
    (
    DID NUMBER(4),
    DNAME VARCHAR2(20)
    );
    INSERT INTO JUL12_DEPARTMENT VALUES (1001,'财务部');
    INSERT INTO JUL12_DEPARTMENT VALUES (1002,'仓储部');
    INSERT INTO JUL12_DEPARTMENT VALUES (1003,'业务部');
    INSERT INTO JUL12_DEPARTMENT VALUES (1004,'客服部');
    --建立员工表
    CREATE TABLE JUL12_EMPLOYEE
    (
        EID NUMBER(4),
        ENAME VARCHAR2(20),
        DID NUMBER(4),
        SALARY NUMBER(4)
    );
    INSERT INTO JUL12_EMPLOYEE VALUES (1001,'ZHANG',1001,2000);
    INSERT INTO JUL12_EMPLOYEE VALUES (1002,'XIE',1001,2000);
    INSERT INTO JUL12_EMPLOYEE VALUES (1003,'ASDF',1003,2000);
    INSERT INTO JUL12_EMPLOYEE VALUES (1004,'EEES',1002,4000);
    INSERT INTO JUL12_EMPLOYEE VALUES (1005,'SFSAF',1004,3999);
    INSERT INTO JUL12_EMPLOYEE VALUES (1006,'EEE',1003,5000);
    INSERT INTO JUL12_EMPLOYEE VALUES (1007,'WEDSS',1004,4000);


    --15。公司有多少人和资金不为空的人数

    SELECT COUNT(*)
    FROM JUL12_EMPLOYEE

    SELECT COUNT(SALARY)
    FROM JUL12_EMPLOYEE

    --16。资金大于0的人数

    SELECT COUNT(*)
    FROM JUL12_EMPLOYEE
    WHERE SALARY >=0;

    --17。各个部门平均最大,最小工资,人数,按照部门号升序排列

    SELECT D.DNAME, COUNT(*) PERSONNUM,AVG(SALARY) AVGSALARY,MAX(SALARY) MAXSALARY ,MIN(SALARY) MINSALARY
    FROM JUL12_DEPARTMENT D,JUL12_EMPLOYEE E
    WHERE D.DID = E.DID
    GROUP BY D.DNAME;

    --18。工资大于1500的部门的人数

    SELECT DID, COUNT(ENAME)
    FROM
    (
        SELECT DID ,ENAME,SALARY
        FROM JUL12_EMPLOYEE
        WHERE SALARY >1500
    )
    GROUP BY DID;

    --19。各个部门平均工资和人数,按照部门名字升序排列

    SELECT AVG(E.SALARY),COUNT(E.EID) ,D.DNAME
    FROM JUL12_EMPLOYEE E,JUL12_DEPARTMENT D
    GROUP BY D.DNAME
    ORDER BY DNAME;

    --20。是否有员工在同一部门,而且工资相同,列出这样的部门号和工资,人数

    SELECT DID ,AVG(SALARY) SALARY,COUNT(EID) COUNTEID
    FROM
    (
        SELECT C.DID,C.SALARY,C.EID FROM JUL12_EMPLOYEE C,
        (
            SELECT A.DID, A.SALARY,A.EID
            FROM JUL12_EMPLOYEE A,JUL12_EMPLOYEE B        
            WHERE A.DID =B.DID AND A.SALARY=B.SALARY AND A.EID != B.EID
        )D
        WHERE C.DID =D.DID AND C.SALARY=D.SALARY AND C.EID != D.EID
    )
    GROUP BY DID

    --21。哪些部门工资高于1000的人数超过2人,列出部门名字
    SELECT DNAME FROM JUL12_DEPARTMENT
    WHERE DID IN
    (
        SELECT DID  FROM
        (
            SELECT DID FROM
            JUL12_EMPLOYEE WHERE SALARY > 1000
        )
        GROUP BY DID
        HAVING COUNT(*) >2
    )

    --22。哪些员工和biri同部门

    SELECT * FROM JUL12_EMPLOYEE
    WHERE DID IN
    (
        SELECT DID FROM JUL12_EMPLOYE
        WHERE ENAME ='biri'
    )

    --23。哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序)

    SELECT ENAME ,SALARY FROM JUL12_EMPLOYEE
        WHERE SALARY > (
                                SELECT AVG(SALARY) FROM JUL12_EMPLOYEE
                            )
        ORDER BY SALARY DESC;

    --24。哪些员工的工资,介于32和33部门(33高些)平均工资之间

    SELECT ENAME ,SALARY
    FROM JUL12_EMPLOYEE
    BETWEEN
    (
        SELECT AVG(SALARY) FROM JUL12_EMPLOYEE WHERE DID= 32
    )
    AND
    (
        SELECT AVG(SALARY) FROM JUL12_EMPLOYEE WHERE DID =33
    );

    --25。所在部门平均工资高于1500的员工名字

    SELECT ENAME FROM JUL12_EMPLOYEE
    WHERE DID IN     (
                            SELECT DID FROM JUL12_EMPLOYEE
                            GROUP BY DID
                            HAVING AVG(SALARY) >1500
                        )

    --26。列出各个部门的ID,以及这个部门的最高工资员工名字和工资

    SELECT A.DID ,A.ENAME,A.SALARY
    FROM JUL12_EMPLOYEE A,
    (
        SELECT MAX(SALARY) MAXSALARY ,DID MAXDID FROM JUL12_EMPLOYEE
        GROUP BY DID
    ) B
    WHERE A.DID=B.MAXDID AND A.SALARY = B.MAXSALARY


    --27。哪个员工是整个公司的最高工资

    SELECT ENAME FROM JUL12_EMPLOYEE
    WHERE SALARY = (
                            SELECT MAX(SALARY)
                            FROM JUL12_EMPLOYEE
                        );

    --28。部门平均工资最高的是多少
    SELECT MAX (AVGSALARY)
    FROM     (
                SELECT AVG(SALARY) AVGSALARY FROM JUL12_EMPLOYEE
                GROUP BY DID
            )


  • 相关阅读:
    ST L3 测试用例
    ST L2 系统测试流程
    ST L1 软件测试基础
    软件测试 Part5 使用测试文档
    软件测试 Part4 测试的补充
    Python Day37 python多线程标准模块concurrent.futures
    Python Day36 python多线程
    Python Day35进程池,回调函数
    Python Day34 python并发编程之多进程
    Python Day32 进程
  • 原文地址:https://www.cnblogs.com/itgmhujia/p/1262318.html
Copyright © 2020-2023  润新知