이 글에서 꼭 잡아야 할 것
조건 분기는 데이터를 사람이 읽기 좋은 형태로 바꾸는 핵심 기술이다. 표준 SQL의 CASE와 오라클 고유 함수 DECODE를 함께 익히면 문제 해석 폭이 넓어진다.
같은 데이터를 그대로 보여주는 것보다, 의미를 붙여 보여주는 것이 SQL의 실제 가치다. 상태 코드를 한글 라벨로 바꾸거나 급여 구간별 등급을 표시하는 작업은 대부분 CASE나 DECODE로 해결한다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT employee_id,
CASE
WHEN salary >= 10000 THEN 'A'
WHEN salary >= 5000 THEN 'B'
ELSE 'C'
END AS grade
FROM employees;
SELECT department_id,
DECODE(department_id, 10, 'ADMIN', 20, 'MARKETING', 'ETC') AS dept_label
FROM employees;
문법 읽는 포인트
- `CASE`는 조건식 기반이므로 범위 분기에 적합하다.
- `DECODE`는 값 일치 비교형이라 간단한 코드 매핑에 유리하다.
- 복잡한 분기는 CASE가 가독성과 확장성 측면에서 더 안정적이다.
핵심 용어
- CASE
- DECODE
- Conditional Expression
부서 코드와 급여 등급을 함께 가공하기
DECODE는 코드 매핑, CASE는 범위 분기라는 식으로 역할을 나눠 두면 기억이 편하다. 둘을 한 문장에서 함께 써도 구조가 자연스럽다.
SELECT employee_id,
department_id,
DECODE(department_id, 50, 'SHIP', 60, 'IT', 90, 'EXEC', 'GENERAL') AS dept_group,
CASE
WHEN salary >= 12000 THEN 'TOP'
WHEN salary >= 7000 THEN 'MID'
ELSE 'BASE'
END AS salary_group
FROM employees
ORDER BY employee_id;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- `CASE`는 표준 문법, `DECODE`는 오라클 전용이라는 점을 구분하자.
- CASE 조건 순서를 바꾸면 결과가 달라진다.
- NULL 처리와 함께 분기하는 문제는 `NVL`과 CASE 조합으로 자주 나온다.
자주 하는 실수
- `DECODE`로 범위 비교까지 한 번에 해결하려는 실수
- CASE의 ELSE를 생략했을 때 NULL이 나올 수 있다는 점을 놓치는 실수
- 조건 순서를 넓은 범위부터 써서 아래 조건이 닿지 않는 실수
연결 학습
조건 분기가 익숙해지면 분석 함수의 윈도우 개념도 훨씬 쉽게 받아들일 수 있다. 다음 챕터에서는 OVER와 PARTITION BY를 중심으로 분석 함수의 기초를 정리한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
다중행 서브쿼리와 IN, ANY, ALL
서브쿼리 결과가 여러 행이 되는 순간 비교 연산자 선택이 달라진다. IN, ANY, ALL을 정확히 구분하면 다중행 서브쿼리 문제를 안정적으로 풀 수 있다.
상호연관 서브쿼리와 EXISTS
상호연관 서브쿼리는 바깥 질의의 각 행이 안쪽 질의에 영향을 준다. EXISTS와 함께 익히면 “관련 데이터가 있는가”를 검사하는 문제를 매우 자연스럽게 풀 수 있다.
SET 연산자: UNION, UNION ALL, INTERSECT, MINUS
SET 연산자는 여러 SELECT 결과를 집합처럼 합치거나 비교하는 문법이다. 결과 구조가 같아야 하며, 중복 제거 여부를 정확히 구분하는 것이 핵심이다.
분석 함수 기초: OVER와 PARTITION BY
분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.
순위 함수: ROW_NUMBER, RANK, DENSE_RANK
순위 함수는 정렬된 데이터에 순서를 매긴다. 같은 값이 나왔을 때 번호가 어떻게 붙는지 이해하면 상위 N건 문제와 동점 처리 문제를 확실히 잡을 수 있다.
댓글을 불러오는 중입니다.