본문 바로가기

DB/OracleSQL

복습문제 - 서브쿼리

07.08 복습문제 - 서브쿼리

Q. 6-1 최대월급을 받는 사원의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal = (select max(sal) from emp);​
Q. 6-2 JONES 보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal > (select sal
                 from emp
                 where ename = 'JONES');​
Q. 6-3 SCOTT 과 같은 월급을 받는 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal = (select sal
                 from emp
                 where ename = 'SCOTT')
and ename != 'SCOTT';​
Q. 6-4 ALLEN 보다 늦게 입사한 사원들의 이름과 입사일을 출력하시오
select ename, hiredate
from emp
where hiredate > (select hiredate
                        from emp
                        where ename = 'ALLEN');​
Q. 6-5 사원 테이블에 최대월급을 받는 사원의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal = (select max(sal)
                from emp);​
Q. 6-6 ALLEN 과 같은 부서번호에서 근무하는 사원들의 이름과 부서번호를 출력하시오
select ename, deptno
from emp
where deptno = (select deptno
                       from emp
                       where ename = 'ALLEN');​
Q. 6-7 SCOTT 과 같은 직업을 갖는 사원들의 이름과 직업을 출력하는데 SCOTT 은 제외하고 출력하시오
select ename, job
from emp
where job = (select job
                 from emp
                 where ename = 'SCOTT')
and ename != 'SCOTT';​
Q. 6-8 직속 상사가 KING인 사원들을 출력하시오
select ename
from emp
where mgr = (select empno
                  from emp
                  where ename = 'KING');​
Q. 6-9 DALLAS 에 있는 부서번호에서 근무하는 사원들의 이름과 월급을 출력하시오 ! (조인 쓰지 말고 서브쿼리로만)
select ename, sal
from emp
where deptno = (select deptno
                       from dept
                       where loc = 'DALLAS');​
Q. 6-10 직업이 SALESMAN 인 사원들과 월급이 같은 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal in (select sal
                 from emp
                 where job = 'SALESMAN');​
Q. 6-11 직업이 SALESMAN 인 사원들과 월급이 같지 않은 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal not in (select sal
                       from emp
                       where job = 'SALESMAN'
                       and sal is not null);​
Q. 6-12 관리자인 사원들의 이름을 출력하시오
select ename
from emp
where empno in (select mgr
                      from emp);​
Q. 6-13 관리자가 아닌 사원들의 이름을 출력하시오 (즉, 관리자가 아닌 사원)
select ename
from emp
where empno not in (select mgr
                            from emp
                            where mgr is not null);​
Q. 6-14 직업이 SALESMAN 인 사원들중에서의 최대월급보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal > all (select sal
                    from emp
                    where job = 'SALESMAN');​
Q. 6-15 직업이 SALESMAN 인 사원들중에서 가장 작은 월급을 받는 사원보다 더 큰 월급을 받는 사원들의 이름과 월급을 출력하시오
select ename, sal
from emp
where sal > (select min(sal)
                from emp
                where job = 'SALESMAN');​
Q. 6-16 30번 부서번호인 사원들 중에서 가장 늦게 입사한 사원보다 더 늦게 입사한 사원들 의 이름과 입사일을 출력하시오 (전체 사원을 대상으로 수행)
select ename, hiredate
from emp
where hiredate > (select max(hiredate)
                        from emp
                        where deptno = 30);​
Q. 6-17 부서 테이블에서 부서번호와 부서위치를 출력하는데 사원 테이블에 존재하는 부서 번호에 대한 것만 출력하시오
select deptno, loc
from dept
where deptno in (select deptno
                       from emp);​
Q. 6-18 부서테이블에서 부서번호와 부서위치를 출력하는데 사원 테이블에 존재하지 않는 것을 출력하시오
select deptno, loc
from dept d
where not exists (select 1
                      from emp
                      where deptno = d.deptno);​
select deptno, loc
from dept
where deptno not in (select deptno
                             from emp
                             where deptno is not null);

'DB > OracleSQL' 카테고리의 다른 글

그룹 함수(Group Function) - ROLLUP, CUBE, GROUPING SETS, GROUPING  (0) 2021.07.13
집합 연산자  (0) 2021.07.13
서브쿼리(Subquery)  (0) 2021.07.13
복습문제 - 조인(JOIN)문  (0) 2021.07.13
조인(JOIN)문  (0) 2021.07.13