본문 바로가기

Algorithm/MySQL

[LeetCode] 1179. Reformat Department Table (MySQL)

문제

코드

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

풀이

  1. 부서 ID 열과 각 달의 매출 열이 있도록 테이블을 다시 포맷하라
  2. 각 부서별로 달마다 예산을 출력해야 하기 위해서는 id(부서)를 기준으로 Group by 해주기
  3. 달마다 예산을 보기 위해서 sum함수 사용 > group by는 집계 함수와 같이 사용
  4. 값이 있을 때만 더해주고 없을 경우 null

출처

반응형