반응형
SMALL
WHERE 절에서 CASE WHEN 사용하는 이유
WHERE 절에서 1 = (CASE WHEN) 구문을 사용하는 주된 이유는 복잡한 조건을 한 번에 표현하기 위해서입니다. 특히, 여러 개의 AND/OR 조건을 사용해야 하는 경우, CASE WHEN을 활용하면 코드를 더욱 간결하게 만들고 가독성을 높일 수 있습니다.
예시 쿼리
1. 부서 번호가 10, 20 또는 30이고 급여가 3000 이상인 사원 조회
SQL
SELECT *
FROM emp
WHERE 1 = (
CASE WHEN deptno IN (10, 20, 30) AND sal >= 3000 THEN 1
ELSE 0
END
);
Use code with caution.
- 설명: deptno가 10, 20, 30 중 하나이고 sal이 3000 이상인 경우에만 1을 반환하므로, 해당 조건을 만족하는 사원만 조회됩니다.
2. 입사일이 1981년 이후이고, 직급이 'SALESMAN' 또는 'MANAGER'인 사원 조회
SQL
SELECT *
FROM emp
WHERE 1 = (
CASE WHEN hiredate >= '1981-01-01' AND job IN ('SALESMAN', 'MANAGER') THEN 1
ELSE 0
END
);
Use code with caution.
- 설명: hiredate가 1981년 이후이고 job이 'SALESMAN' 또는 'MANAGER'인 경우에만 1을 반환합니다.
3. 급여가 평균 급여의 1.5배 이상이거나, 커미션이 NULL인 사원 조회
SQL
SELECT *
FROM emp
WHERE 1 = (
CASE WHEN sal >= (SELECT AVG(sal) FROM emp) * 1.5 OR comm IS NULL THEN 1
ELSE 0
END
);
Use code with caution.
- 설명: 서브쿼리를 이용하여 평균 급여를 구하고, 개별 사원의 급여와 비교하거나 커미션이 NULL인 경우를 판단합니다.
CASE WHEN을 WHERE 절에서 사용하는 이점
- 복잡한 조건 간결하게 표현: 여러 개의 AND/OR 조건을 하나의 CASE WHEN으로 표현할 수 있습니다.
- 가독성 향상: 복잡한 조건을 논리적으로 분리하여 코드를 더 쉽게 이해할 수 있습니다.
- 유지보수 용이: 조건 변경 시 CASE WHEN 부분만 수정하면 되므로 유지보수가 편리합니다.
반응형
LIST
'DB > Oracle' 카테고리의 다른 글
Outer Join (0) | 2024.10.06 |
---|---|
Normalisation in SQL (0) | 2024.10.05 |
오라클 트리거 (0) | 2024.03.24 |
[Oracle] 오라클 SELECT 해서 INSERT 하는 방법 (여러개, 서브쿼리) (0) | 2023.10.19 |
"ORA-01839: 지정된 월에 대한 날짜가 부적합합니다 " 에러 발생 시 (0) | 2023.10.06 |