본문 바로가기
oracle

1020_서브쿼리

by 신방동불주먹 2022. 10. 26.

select ename, max(sal) --일반컬럼과 그룹함수 함께 사용할 수 없다. 그럼 이름이랑 같이 출력하고싶은데 어‹또舊?
from emp;

--서브쿼리
--select 구문을 중첩해서 사용하는 것(where)

select ename,max(sal)
from emp;

---scott사원의 근무지 부서명을 알고시퍼
select deptno
from emp
where ename = 'SCOTT';

select dname
from dept 
where deptno = 20;

--부서번호 자리에 쿼리 자체를 넣어서 출력한다.
--큰 틀이 메인쿼리 ()안에 서브쿼리

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



--급여를 가장 많이 받는 사원
--where절에는 그룹함수 못쓴다 계속생각
select ename,max(sal)
from emp; 

select ename,sal
from emp
where sal =(
select max(sal)
from emp);

--델라스에 근무하는 사람들의 이름, 부서번호 출력하고 싶어요
select ename, deptno
from emp
where deptno = (
        select deptno 
        from dept 
        where loc='DALLAS'
);

--직속 상관이 king인 사원의 이름과 급여를 조회(서브쿼리문으로 작성)
select ename,sal
from emp
where mgr = (
            select empno
            from emp
            where ename = 'KING'
);

--값을 적는 부분을 서브쿼리로 바꾼것(아래 위 결과가 같음)
SELECT *
FROM EMP
WHERE SAL IN(5000,3000,2850);


--다중행 서브쿼리
--IN : 결과중에 하나만 만족하면 된다
-- > ANY: 결과중에 가장 작은값보다 크면 된다
-- > ALL : 결과중에 가장 큰값보다 크면된다.
SELECT *
FROM EMP
WHERE SAL IN (
        SELECT MAX(SAL)
        FROM EMP
        GROUP BY DEPTNO
        );

--ANY
SELECT *
FROM EMP
WHERE SAL > ANY (
        SELECT MAX(SAL) --가장 작은값보다 크면 
        FROM EMP
        GROUP BY DEPTNO
        );
  

--ALL 기타는 몰라도된다
  --부서가 30인 사원의 급여       
SELECT ENAME,SAL
FROM EMP
WHERE SAL > ALL(SELECT SAL  --ALL 조회된 데이터를 모두 만족하는? 가장큰값보다 크면 된다ㅗㄱ??????????뭐라고??????
            FROM EMP 
            WHERE DEPTNO = 30)
            
            
--------------------비교할 열이 여러개인 다중열 서브쿼리
SELECT *
FROM EMP
WHERE(DEPTNO,SAL) IN( --WHERE()내의 값을 각 비교한다 / AND 조건 처럼 
                    SELCET DEPTNO,MAX(SAL)
                    FROM EMP 
                    GROUP BY DEPTNO
                    
                    );

'oracle' 카테고리의 다른 글

뷰 (View)  (0) 2022.10.26
1019_날짜함수  (1) 2022.10.26
Foreign Key(외래키)  (0) 2022.10.25
순위함수(ROW_NUMBER, DENSE_RANK,RANK)  (0) 2022.10.25
1021_제약조건(not null, unique, primary key)  (0) 2022.10.25