LEETCODE CASE 문제 질문
372
작성한 질문수 20
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
위의 코드를 사용하면 각 월별 수익이 올바르게 합산됩니다.
더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
리트코드 1280. Students and Examinations
0
75
3
16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문
0
89
2
African Cities 문제관련 질문
0
54
1
SQL 코딩테스트 질문
0
206
1
HACKER RANK에서 문제찾기
0
98
2
강의 자료 다운로드
0
90
2
Asian population 문제가 없어요
0
77
2
INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'
0
68
2
별칭 관련해서 질문 있습니다.
0
79
2
rising temperature 문제 질문
0
98
2
해커랭크 TOP EARNERS 문제 질문
0
99
1
ON 뒤에 질문
0
95
2
INNER JOIN 질문. 강의와 결과값이 다릅니다.
0
196
3
END, 뒤에 * 붙이면 에러가 뜹니다
1
204
2
CustomerID가 중복되서 나타나요
0
234
3
별칭이 전체 테이블을 못 불러와요.
0
144
2
CASE WHEN 쿼리 오류 문의
1
325
3
CASE문제풀이 질문
0
125
1
Customers Who Never Order 풀다가 Alias관련 질문사항
0
138
1
Average Population 질문
0
130
1
Revising Aggregations - The Count Function 질문
0
104
1
Average Population of Each Continent 에대해서 질문
0
193
3
w3schools 에서 쿼리 작성 질문
0
159
1
INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?
0
329
1





