새소식

Database/MySQL

MySQL_조건문 CASE를 활용한 테이블 피봇

  • -

테이블 피봇팅: 테이블의 구조를 바꾸는 것

SELECT CASE 
           WHEN categoryID = 1 THEN price
           ELSE NULL
       END AS category1_price, *
FROM Products;

 

 

categoryID=1의 Price 평균을 구하고 싶다면?

SELECT AVG(CASE 
           WHEN categoryID = 1 THEN price
           ELSE NULL
       END) AS category1_price, *
FROM Products;

 

테이블 피봇팅

SELECT AVG(CASE WHEN categoryID = 1 THEN price ELSE NULL END) AS category1_price,
       AVG(CASE WHEN categoryID = 2 THEN price ELSE NULL END) AS category2_price,
       AVG(CASE WHEN categoryID = 3 THEN price ELSE NULL END) AS category3_price
FROM Products;

 

 


LEET CODE 1179Reformat Department Table

Write an SQL query to reformat the table such that there is a department id column and a revenue column for each month.

 

 

풀이과정

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;

 

728x90

'Database > MySQL' 카테고리의 다른 글

MySQL_Self JOIN  (0) 2022.03.08
MySQL_테이블의 결합 JOIN  (0) 2022.03.03
MySQL_조건문 CASE  (0) 2022.02.26
MySQL_GROUP BY & HAVING  (0) 2022.02.25
MySQL_데이터 요약 통계(집계함수)  (0) 2022.02.24
Contents