다연이네

[days08] 서브쿼리 본문

Oracle

[days08] 서브쿼리

 다연  2020. 11. 9. 18:04
반응형

where 조건절에 비교할 열이 여러개인 다중열 서브쿼리

문제) 각 부서에서 가장 월급을 많이 받는 사람을 조회하라

--1. rank() 사용
select *
from (
    select emp.*, 
        rank() over(partition by deptno order by sal desc)일등 
    from emp
    )
where 일등=1;

--2. 다중열 서브쿼리
select *
from emp
where (deptno, sal) in (select deptno, max(sal) from emp group by deptno);

with절에 여러 별칭이 올 수 있다 

with e10 as(
    select *
    from emp
    where deptno = 10
    ),
d as(
    select *
    from dept
)
select *
from e10, d
where e10.deptno = d.deptno;

상관서브쿼리

(join 대신에 상관서브쿼리 사용)

select e.*
        ,(select dname from dept where deptno=e.deptno) as dname
        ,(select grade from salgrade where e.sal between losal and hisal) as grade
from emp e;

 

반응형
Comments