작성
·
333
0
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
해당 코드에 대해서 이해가 안가는 부분이 있어서 문의 드립니다.
SELECT ID
SUM(CASE WHEN MONTH = 'JAN' THEN REVENUE
WHEN MONTH = 'FEB' THEN REVENUE
WHEN MONTH = 'MAR' THEN REVENUE
ELSE NULL
END
이런 식으로 생각을 했는데요.
AS가 REVENUE 뒤에 각각 들어갈 수 있는지와
이런 식으로 할 경우 어떤 부분에서 오류가 있는지 여쭤봅니다!
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
쿼리 코드를 보면, department 테이블에서 id와 month, revenue라는 열을 사용하여 id별로 월별 수익을 계산하고 있습니다.
쿼리의 CASE 문은 각 월에 해당하는 revenue를 선택적으로 합산하고 해당 월이 아닌 경우에는 NULL 값을 반환하도록 작성되어 있습니다. AS 키워드는 각 합계 열의 이름을 정의하는 데 사용됩니다.
하지만, 해당 쿼리에서 AS 키워드는 잘못 사용되었습니다. AS 키워드는 열 별칭을 정의하는 데 사용되며, 월별 수익을 구분하기 위해 열 별칭을 부여하는 것은 적절하지 않습니다.
올바른 코드는 다음과 같이 작성될 겁니다.
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
위의 코드를 사용하면 각 월별 수익이 올바르게 합산됩니다.
더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!