SQLD
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
PIVOT·UNPIVOT: 행과 열 전환
원래 이론 →판단 기준
PIVOT 문제는 먼저 집계할 값, 열로 바꿀 구분값, 행으로 남을 그룹 기준을 나눈다. PIVOT (SUM(금액) FOR 분기 IN ('1Q' AS Q1, '2Q' AS Q2))에서 금액은 집계 대상, 분기는 열 전환 기준이며, 입력 집합에 남은 다른 컬럼은 암묵적인 GROUP BY 기준이 된다. 불필요한 컬럼이 입력 집합에 남으면 예상보다 행이 여러 개로 나뉠 수 있으므로 PIVOT 전에 필요한 컬럼만 선택한다.
UNPIVOT (금액 FOR 분기 IN (Q1 AS '1Q', Q2 AS '2Q'))는 여러 열을 이름·값 행으로 되돌린다. 기본 동작에서는 값이 NULL인 행이 제외될 수 있고, 보존해야 한다면 INCLUDE NULLS를 명시한다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT 상품ID, 분기, 금액
FROM 분기매출
UNPIVOT INCLUDE NULLS (
금액 FOR 분기 IN (Q1 AS '1Q', Q2 AS '2Q')
);
PIVOT을 지원하지 않는 DBMS에서는 조건부 집계로 같은 결과를 만들 수 있다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
SELECT 상품ID,
SUM(CASE WHEN 분기 = '1Q' THEN 금액 END) AS Q1,
SUM(CASE WHEN 분기 = '2Q' THEN 금액 END) AS Q2
FROM 매출
GROUP BY 상품ID;
시험에서는 PIVOT의 FOR가 열로 전환할 값을, IN이 생성할 열 목록을 지정한다는 점과 UNPIVOT이 원본 값을 복원하는 역연산이 아니라 열을 행 구조로 재표현하는 연산이라는 점을 구분한다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.