https://leetcode.com/problems/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
테이블 피봇팅의 핵심은 CASE문을 활용해서 row 데이터를 column으로 옮겨준 후 GROUP BY를 적절히 사용하는 것 !
'SQL > 문제풀이' 카테고리의 다른 글
[LeetCode] Swap Salary (0) | 2024.02.15 |
---|---|
[HackerRank] Symmetric Pairs 📌 (0) | 2024.02.14 |
[HakcerRank] Type of Triangle (0) | 2024.02.14 |
[프로그래머스] 상품을 구매한 회원 비율 구하기 📌 (0) | 2024.02.13 |
[프로그래머스] 보호소에서 중성화한 동물 📌 (0) | 2024.02.12 |