[SQL] IN 연산자

·2025년 7월 1일
0

SQL

목록 보기
30/126

예제 답

select ename, sal, job
 from emp
 where job in('SALESMAN', 'ANALYST', 'MANAGER');

💡 여러 개의 값을 비교할 때 --> in 사용


문제1. 사원번호가 7788, 7902 인 사원의 사원번호과 이름과 월급을 출력하시오

select empno, ename, sal
 from emp
 where empno in (7788, 7902);

-- 또는

select empno, ename, sal
 from emp
 where empno = 7788 or empno = 7902;

오라클이 내부적으로 실행한 SQL 확인

explain plan for
select empno, ename, sal
 from  emp
 where  empno  in (7788, 7902 );
 
select * from table(dbms_xplan.display);
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     2 |    66 |     3   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| EMP  |     2 |    66 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter("EMPNO"=7788 OR "EMPNO"=7902)

문제2. 부서번호가 10번, 20번이 아닌 사원들의 이름과 월급과 부서번호를 출력

select ename, sal, deptno
 from emp
 where deptno not in (10, 20);

문제3. 직업이 SALESMAN이 아닌 사원들의 이름과 월급과 직업을 출력하는데 월급이 높은 사원들부터 출력하시오

select ename, sal, job
 from emp
 where job != 'SALESMAN'
 order by sal desc;

문제4. 부서번호가 30번인 사원들의 직업을 출력하는데 중복을 제거해서 출력하시오

select distinct job
 from emp
 where deptno = 30;

문제5. emp21 테이블에서 나이가 27, 31 인 학생들의 이름과 나이와 생일을 출력하는데 나이가 높은 학생들부터 출력되게 하시오

select ename, age, birth
 from emp21
 where age in (27, 31)
 order by age desc;

문제6. emp21 테이블에서 서울에서 거주하는 학생들의 통신사를 출력하는데 중복을 제거해서 출력하시오

select distinct telecom
 from emp21
 where address like '%서울%';

문제7. 사원 테이블에서 이름의 첫글자가 A 또는 S 로 시작하는 사원들의 이름과 직업과 월급을 출력하는데 월급이 높은 사원부터 출력하고 컬럼명을 한글로 이름, 직업, 월급으로 출력되게 하시오

select ename 이름, job 직업, sal 월급
 from emp
 where ename like 'A%' 
 	or ename like 'S%'
 order by sal desc;

0개의 댓글