[MySQL실습] 1179. Reformat Department Table

c.Hano·2024년 12월 6일

MySQL실습

목록 보기
9/21

정답

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
  • GROUP BY id 를 통해 id가 1번 일 경우 ',' 뒤의 값을 충족하면서 id가 1인 경우 값들을 더하였다(SUM)
  • GROUP BY 를 통해 그룹화를 하고 SELECT에 id를 입력하였다.
  • SUM(CASE WHEN month = 'Jan' THEN revenue ELSE NULL END) AS Jan_Revenue 을 통해 세로로 출력되는 데이터 값들을 가로로 피붓팅 해주었다.
    - 피붓팅 : 테이블 구조를 바꾸는 것.

SQL에서는 1행1열의 개념이 중요하지 않는 듯하다. 그냥 데이터의 값을 직접 지정하여 출력하는 듯 하다?

profile
꼬질이

0개의 댓글