[Oracle] 20.서브쿼리


서브쿼리



SECELT문에 SECELT문을 추가할 수 있습니다!

이를 서브쿼리문이라고 합니다~!


예제를 통해 확인해보죠!

예제




  • 사원번호, 사원명, 매니저번호, 매니저명 서브쿼리 이용해 조회




SELECT
    employee_id "사원번호",
    first_name|| ' '|| last_name "사원명",
    manager_id "상사번호",
    (
        SELECT
            first_name || last_name
        FROM
            employees m
        WHERE
            e.manager_id = m.employee_id
    ) "상사명"
FROM
    employees e;




image




  • Adam과 같은 부서에 근무하는 사원의 이름 조회




SELECT
    first_name "이름"
FROM
    employees
WHERE
    department_id = (
        SELECT
            department_id
        FROM
            employees
        WHERE
            first_name = 'Adam'
);




  • 직급이 Manager 인 사원 사원명과 부서번호, job_id 조회




SELECT
    employees.first_name|| ' '|| employees.last_name "사원명",
    department_id "부서번호",
    job_id
FROM
    employees
WHERE
    employees.department_id IN (
        SELECT
            department_id
        FROM
            departments
        WHERE
            job_id IN (
                SELECT
                    job_id
                FROM
                    jobs
                WHERE
                    upper(job_title) LIKE '%MANAGER'
            )
    );




image




  • Chen의 급여와 동일하거나 더 많이 받는 사원명과 급여를 조회




SELECT
    first_name|| ' '|| last_name "이름",
    TO_CHAR(salary,'999,999,999')|| '원' "급여"
FROM
    employees
WHERE
    salary >= (
        SELECT
            salary
        FROM
            employees
        WHERE
            last_name = 'Chen'
);




image




  • 2005년 이후 입사한 사원중 대표이사를 제외한 전체 사원의 평균 급여보다 많이 받는 사원조회




select 
    first_name||' '||last_name "사원명", salary "급여"
from 
    employees
where 
    salary > (
        select 
            round(avg(salary)) 
        from 
            employees
        where 
            manager_id is not null
            and
            to_char(hire_date, 'yyyy') > 2005
); 




image