-- 1. 다중 행 서브 쿼리
-- 2. ALL, ANY 연산자
-- 4.1 ALL 연산자
-- ALL 조건은 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참입니다.
-- 찾아진 값에 대해서 AND 연산을 해서 모두 참이면 참이 되는 셈이 됩니다. > ALL 은 "모든 비교값 보다 크냐"
-- 고 묻는 것이 되므로 최대값보다 더 크면 참이 됩니다.
-- 30번 소속 사원들 중에서 급여를 가장 많이 받는 사원보다 더 많은 급여를 받는 사람의 이름, 급여를
-- 출력하는 쿼리문을 작성해 봅시다.
select sal from emp where deptno=30;
-- 30번 소속 사원들 중에서(sub)
select ename, sal from emp
where sal > all(select sal from emp where deptno=30);
-- (부서가 30인 사람들의 급여를 조회한다)
-- 그리고 all 연산자를 붙이면 "모든 비교값 보다 크냐"고 묻는다.
-- 즉 30번의 제일 큰 값인 2850보다 큰 것을 조회하여 출력한다.
-- 아래의 쿼리문과 같다.
select ename, sal from emp
where sal > (select max(sal) from emp where deptno = 30);
--<탄탄히 다지기>
-- 9. 영업 사원(SALESMAN)들 보다 급여를 많이 받는 사원들의 이름과 급여와 직급(담당업무)를 출력하되 영업 사원은 출력하지 않습니다.
select * from emp;
select * from dept;
select ename, sal, job
from emp
where sal > all(select sal from emp where job = 'SALESMAN');
-- where sal > (select max(sal) from emp where job = 'SALESMAN');
-- 4.2 ANY 연산자
-- 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 하나 이상만 일치하면 참입니다.
-- ANY는 찾아진 값에 대해서 하나라도 크면 참이 되는 셈이 됩니다.
-- 그러므로 찾아진 값 중에서 가장 작은 값 즉, 최소값 보다 크면 참이됩니다.
-- 다음은 부서번호가 30번인 사원들의 급여 중 가장 작은 값(950)보다
-- 많은 급여를 받는 사원의 이름, 급여를 출력하는 예제를 작성해 봅시다.
select ename, sal
from emp
where sal > ANY(select sal from emp where deptno = 30);
-- where sal > (select min(sal) from emp where deptno = 30);
-- <탄탄히 다지기>
-- 10. 영업 사원들의 최소 급여를 많이 받는 사원들의 이름과 급여와 직급(담당업무)를 출력하되 영업 사원은 출력하지 않습니다.
select ename, sal, job
from emp
where sal > any(select sal from emp where job = 'SALESMAN')
and job <> 'SALESMAN';
-- where sal > (select min(sal) from emp where job = 'SALESMAN');
'Study > OracleDB' 카테고리의 다른 글
26강 오라클 SQL set연산자(2) (1) | 2022.09.10 |
---|---|
25강 오라클 SQL set 연산자(1) (1) | 2022.09.10 |
23강 오라클 SQL 서브 쿼리(2) (1) | 2022.09.10 |
22강 오라클 SQL 서브 쿼리(1) (1) | 2022.09.10 |
21강 오라클 SQL Outer Join (1) | 2022.09.10 |