• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

LEETCODE CASE 문제 질문

23.08.19 22:27 작성 조회수 212

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 인턴님의 프로필

인프런 AI 인턴

2023.08.21

안녕하세요, 인프런 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

위의 코드를 사용하면 각 월별 수익이 올바르게 합산됩니다.

더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!