본문 바로가기

인프런/[백문이불여일타] 데이터 분석을 위한 중급 SQL

CASE

CASE

 

 

CASE

 

  • 조건에 따라 다른 값을 반환할 때 사용
CASE
    WHEN 조건 1 THEN 값 1
    /*
    WHEN 조건 2 THEN 값 2
    ...
    WHEN 조건 N THEN 값 N
    */
    ELSE 값
END
  • 피벗 테이블 형태로도 사용할 수 있다.
    • 조건에 따라 다른 컬럼으로 집계할 때 사용
    • 주로 집계 함수와 함께 사용
SELECT 집계함수(CASE WHEN 조건 1 THEN 값 1 ELSE NULL END)
     /*
     , 집계함수(CASE WHEN 조건 2 THEN 값 2 ELSE NULL END)
     ...
     , 집계함수(CASE WHEN 조건 N THEN 값 N ELSE NULL END)
     */
FROM 테이블명;

HackerRank & LeetCode

 

 

Type of Triangle

 

SELECT CASE
            WHEN (A + B <= C) OR (A + C <= B) OR (B + C <= A) THEN 'Not A Triangle'
            WHEN (A = B) AND (A = C) THEN 'Equilateral'
            WHEN (A = B) OR (A = C) OR (B = C) THEN 'Isosceles'
            ELSE 'Scalene'
       END
FROM triangles;

 

 

Reformat Department Table

 

SELECT id
     , SUM(CASE WHEN month = 'Jan' THEN revenue ELSE NULL END) AS 'Jan_Revenue'
     , SUM(CASE WHEN month = 'Feb' THEN revenue ELSE NULL END) AS 'Feb_Revenue'
     , SUM(CASE WHEN month = 'Mar' THEN revenue ELSE NULL END) AS 'Mar_Revenue'
     , SUM(CASE WHEN month = 'Apr' THEN revenue ELSE NULL END) AS 'Apr_Revenue'
     , SUM(CASE WHEN month = 'May' THEN revenue ELSE NULL END) AS 'May_Revenue'
     , SUM(CASE WHEN month = 'Jun' THEN revenue ELSE NULL END) AS 'Jun_Revenue'
     , SUM(CASE WHEN month = 'Jul' THEN revenue ELSE NULL END) AS 'Jul_Revenue'
     , SUM(CASE WHEN month = 'Aug' THEN revenue ELSE NULL END) AS 'Aug_Revenue'
     , SUM(CASE WHEN month = 'Sep' THEN revenue ELSE NULL END) AS 'Sep_Revenue'
     , SUM(CASE WHEN month = 'Oct' THEN revenue ELSE NULL END) AS 'Oct_Revenue'
     , SUM(CASE WHEN month = 'Nov' THEN revenue ELSE NULL END) AS 'Nov_Revenue'
     , SUM(CASE WHEN month = 'Dec' THEN revenue ELSE NULL END) AS 'Dec_Revenue'
FROM Department
GROUP BY id;

 

 

'인프런 > [백문이불여일타] 데이터 분석을 위한 중급 SQL' 카테고리의 다른 글

UNION  (0) 2025.08.30
JOIN  (1) 2025.08.29
COUNT / SUM / AVG / MIN / MAX / GROUP BY  (0) 2025.08.27