ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 연습 문제
    back-end&DB/SQL(Oracle) 2023. 5. 18. 10:26
    728x90

    문제1. 연봉이 120,000 이상되는 사원들의 이름 및 연봉을 출력하시오

    SELECT
        first_name,
        salary * 12
    FROM
        employees
    WHERE
        salary * 12 >= 120000;

     

    문제2. 사원번호가 176 인 사원의 이름과 부서 번호를 출력하시오

    SELECT
        first_name,
        department_id
    FROM
        employees
    WHERE
        employee_id = '176';

     

    문제3. 연봉이 150,000 에서 200,000의 범위 이외인 사원들의 이름 및 연봉을 출력하시오. 단 연봉은 AnnSal로 출력하시오

    SELECT
        first_name,
        salary * 12 AS annsal
    FROM
        employees
    WHERE
        salary * 12 >= 150000
        AND salary * 12 <= 200000;

     

    문제4. 2003/01/01 일부터 2005/05/30일 사이에 고용된 사원들의 이름, 사번, 고용일자를 출력하시오. 고용일자를 역순으로 정렬하시오

    SELECT
        first_name,
        employee_id,
        hire_date
    FROM
        employees
    WHERE
        hire_date BETWEEN '2003/01/01' AND '2005/05/30';

     

    문제5. 20번 및 50 번 부서에서 근무하는 모든 사원들의 이름 및 부서 번호를 알파벳순으로 출력하시오

    SELECT
        first_name,
        department_id
    FROM
        employees
    WHERE
        department_id IN ( 20, 50 )
    ORDER BY
        first_name ASC;

     

    문제6. 20 번 및 50 번 부서에 근무하며, 연봉이 200,000 ~ 250,000 사이인 사원들의 이름 및 연봉을 출력하시오

    SELECT
        first_name,
        salary * 12
    FROM
        employees
    WHERE
        ( department_id = 20
          OR department_id = 50 )
        AND salary * 12 >= 200000
        AND salary * 12 < 250000;

     

     

    문제7. 2006년도에 고용된 모든 사람들의 이름 및 고용일을 조회한다

    SELECT
        first_name,
        hire_date
    FROM
        employees
    WHERE
        hire_date BETWEEN '2006/01/01' AND '2006/12/31';

     

    문제8. 매니저가 없는 사람들의 이름 및 업무를 출력하시오

    SELECT
        first_name,
        job_id
    FROM
        employees
    WHERE
        manager_id IS NULL;

     

    문제9. 매니저가 있는 사람들의 이름 및 업무, 매니저번호를 조회한다

    SELECT
        first_name,
        job_id,
        manager_id
    FROM
        employees
    WHERE
        manager_id IS NOT NULL;

     

    문제10. 커미션을 받는 모든 사원들의 이름, 연봉 및 커미션을 출력하시오.
    연봉을 역순으로 정렬하고, 연봉은 ANNSAL로 출력하시오

    SELECT
        first_name,
        salary * 12 AS annsal
    FROM
        employees
    WHERE
        commission_pct IS NOT NULL
    ORDER BY
        salary * 12 DESC;

     

    문제11. 이름의 네번째 글자가 a인 사원의 이름을 조회하시오

    SELECT
        first_name
    FROM
        employees
    WHERE
        first_name LIKE '___a%';

     

    문제12. 이름에 a 및 e 글자가 있는 사원의 이름을 조회하시오

    SELECT
        first_name
    FROM
        employees
    WHERE
        first_name LIKE '%a%'
        OR first_name LIKE '%e%';

     

    문제 13. 급여가 2,500, 3,500, 7,000이 아니며 직업이 SA_REP나 ST_CLERK인 사원의 이름과, 급여, 직업을 출력하시오

    SELECT
        first_name,
        salary,
        job_id
    FROM
        employees
    WHERE
        salary NOT IN ( 2500, 3500, 7000 )
        AND job_id IN ( 'SA_REP', 'ST_CLERK' );

     

    문제 14. 30번 부서내의 모든 직업들을 유일한 값으로 출력하시오

    90번 부서 또한 포함하고, 직업을 오름차순으로 출력하시오

    SELECT DISTINCT
        job_id
    FROM
        employees
    WHERE
        department_id IN ( 30, 90 )
    ORDER BY
        job_id ASC;

     

    문제 15. 회사 전체의 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력하시오

    SELECT
        MIN(salary),
        MAX(salary),
        SUM(salary),
        round(
            AVG(salary)
        )
    FROM
        employees;

     

    문제 16. 동일한 직업을 가진 사원들의 총 수를 출력하시오

    SELECT
        job_id,
        COUNT(*)
    FROM
        employees
    GROUP BY
        job_id;

     

    문제 17. 각 직업별, 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를
    출력하시오. 단 최대 급여는 MAX, 최소 급여는 MIN, 급여 총 합은
    SUM 및 평균 급여는 AVG로 출력하고, 직업을 오름차순으로 정렬하시오

    SELECT
        job_id,
        MIN(salary) AS min,
        MAX(salary) AS max,
        SUM(salary) AS sum,
        round(
            AVG(salary)
        )           AS avg
    FROM
        employees
    GROUP BY
        job_id
    ORDER BY
        1;

     

    문제 18. 매니저로 근무하는 사원들의 총 수를 출력하시오

    SELECT
        COUNT(DISTINCT manager_id)
    FROM
        employees;

     

    문제 19. 사내의 최대 급여 및 최소 급여의 차이를 출력하시오

    SELECT
        MAX(salary) - MIN(salary)
    FROM
        employees;

     

    문제20. 모든 사원들의 이름, 부서 이름 및 부서 번호를 출력하시오.

    SELECT
        first_name ,
        department_name,
        e.department_id
    FROM
        employees   e
        FULL OUTER JOIN departments d ON ( e.department_id = d.department_id )
    WHERE
        first_name IS NOT NULL
    ORDER BY
        3;

     

    문제 21. 매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력하시오
    매니저가 없는 사람들은 제외한다.
    최소 급여가 5000 미만인 경우는 제외한다.
    급여 기준 역순으로 조회한다.

    SELECT
        salary
    FROM
        employees
    WHERE
        manager_id IS NOT NULL
        AND salary >= 5000
    ORDER BY
        1 DESC;

     

    문제 22. 커미션을 받는 모든 사람들의 이름, 부서 명, 지역 ID 및 도시 명을 출력하시오

    SELECT
        first_name,
        department_name,
        location_id
    FROM
        employees   e
        FULL OUTER JOIN departments d ON commission_pct IS NOT NULL;

     

    문제 23. 자신의 매니저보다 먼저 고용된 사원들의 이름 및 고용일을 출력하시오

    SELECT
        e.last_name,
        e.employee_id,
        e.hire_date
    FROM
        employees e,
        employees m
    WHERE
        e.manager_id = m.employee_id
        AND e.hire_date < m.hire_date
    ORDER BY
        e.last_name;

     

    문제 24. 부서명, 부서위치ID, 각 부서 별 사원 총 수, 각 부서 별 평균 급여를 출력하되, 부서위치를 오름차순으로 출력하시오

    SELECT
        d.department_name,
        d.location_id,
        COUNT(e.employee_id),
        round(
            AVG(e.salary)
        )
    FROM
        employees   e,
        departments d
    WHERE
        e.department_id = d.department_id
    GROUP BY
        d.department_name,
        d.location_id
    ORDER BY
        d.location_id;

     

    문제 25. Zlotkey 와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용날짜를 출력하시오

    SELECT
        employee_id,
        hire_date
    FROM
        employees
    WHERE
        department_id IN (
            SELECT
                department_id
            FROM
                employees
            WHERE
                last_name = 'Zlotkey'
        )
        AND last_name <> 'Zlotkey'
    ORDER BY
        employee_id ASC;

     

    문제 26. 회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력하시오

    SELECT
        first_name,
        salary
    FROM
        employees
    WHERE
        salary > (
            SELECT
                AVG(salary)
            FROM
                employees
        )
    ORDER BY
        salary;

     

    문제 27. 이름에 u 가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력하시오

    SELECT
        employee_id,
        first_name
    FROM
        employees
    WHERE
        department_id IN (
            SELECT
                department_id
            FROM
                employees
            WHERE
                FIRST_name LIKE '%u%'
        );

     

    문제28. 시애틀에 근무하는 사람 중 커미션을 받지않는 모든 사람들의 이름, 부서 명, 지역 ID를 출력하시오

    SELECT
        e.last_name,
        d.department_name,
        d.location_id
    FROM
        employees   e,
        departments d
    WHERE
        e.department_id = d.department_id
        AND d.location_id = (
            SELECT
                location_id
            FROM
                locations
            WHERE
                city = 'Seattle'
        )
            AND e.commission_pct IS NULL;

     

    문제29. 이름이 DAVIES 인 사람보다 후에 고용된 사원들의 이름 및 고용일자를 출력하시오. 고용일자를 역순으로 출력하시오

    SELECT
        last_name,
        hire_date
    FROM
        employees
    WHERE
        hire_date > (
            SELECT
                hire_date
            FROM
                employees
            WHERE
                last_name = 'Davies'
        )
    ORDER BY
        hire_date DESC;

     

    문제30. King 을 매니저로 두고 있는 모든 사원들의 이름 및 급여를 출력하시오

    SELECT
        last_name,
        salary,
        manager_id
    FROM
        employees
    WHERE
        manager_id IN (
            SELECT
                employee_id
            FROM
                employees
            WHERE
                last_name = 'King'
        );

     

    문제31. 회사 전체 평균급여보다 더 많이 받는 사원들 중 이름에 u가 있는 사원들이 근무하는 부서에서 근무하는 사원들의 사번, 이름 및 급여를 출력하시오

    SELECT
        employee_id,
        last_name,
        salary
    FROM
        employees
    WHERE
        department_id IN (
            SELECT
                department_id
            FROM
                employees
            WHERE
                last_name LIKE '%u%'
                AND salary > (
                    SELECT
                        AVG(salary)
                    FROM
                        employees
                )
        );

     

    728x90

    'back-end&DB > SQL(Oracle)' 카테고리의 다른 글

    SQL TCL, DCL과 객체  (0) 2023.05.16
    SQL DML와 서브쿼리  (0) 2023.05.15
    SQL CREATE와 ALTER 그리고 제약 조건  (0) 2023.05.10
    SQL JOIN  (0) 2023.05.09
    SQL GROUP BY와 HAVING와 ORDER BY  (0) 2023.05.08
Designed by Tistory.