inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL

CASE를 활용한 테이블 피봇 리트코드 문제풀이(난이도 상)

SUM 함수 사용 이유

447

yys

작성한 질문수 3

1

안녕하세요!!

질문에 앞서 저는 처음에 id와 month 를 그룹으로 묶어야 된다는 생각을 가지고

SELECT id

      ,CASE WHEN month='jan' THEN revenue ELSE NULL END AS Jan_Revenue

      ,CASE WHEN month='feb' THEN revenue ELSE NULL END AS Feb_Revenue

      ,CASE WHEN month='mar' THEN revenue ELSE NULL END AS Mar_Revenue

FROM department

group by id, Jan_Revenue, Feb_Revenue, Mar_Revenue

결과

["id", "Jan_Revenue", "Feb_Revenue", "Mar_Revenue"]

[1, 8000, null, null]

[2, 9000, null, null]

[3, null, 10000, null]

[1, null, 7000, null]

[1, null, null, 6000]

위와 같이 쿼리문을 작성하였더니 id 값이 그룹화 되지 않았습니다.

그래서 두번째 방법으로 id만 그룹화 하였더니

SELECT id

      ,CASE WHEN month='jan' THEN revenue ELSE NULL END AS Jan_Revenue

      ,CASE WHEN month='feb' THEN revenue ELSE NULL END AS Feb_Revenue

      ,CASE WHEN month='mar' THEN revenue ELSE NULL END AS Mar_Revenue

FROM department

group by id

결과

["id", "Jan_Revenue", "Feb_Revenue", "Mar_Revenue"]

[1, 8000, null, null]

[2, 9000, null, null]

[3, null, 10000, null]   

위와 같이 값은 나오나 ELSE 처리가 되어 나머지 값들은 모두 NULL 처리 되는 현상이 출력됐습니다.

SUM 함수를 사용하는 것은 문자열을 다 더해주는 개념으로 이해하면 될까요??

month가 문자열이므로  month='jan' 인 revenue 데이터를 가져온다고 이해하는게 맞을까요??

답변 부탁드리겠습니다.

sql

답변 2

0

이보민

안녕하세요 js yoon님

GROUP BY와 Pivoting의 개념이 아직 익숙하지 않으셔서 헷갈리는 지점이 있으신 것 같은데요.

이전에 같은 내용으로 질문해주신 분이 있어 해당 질문 첨부드립니다. 아래 문의글에 답변드린 내용 참고하시고 다시 한 번 생각해보시면 좋을 것 같습니다.

https://www.inflearn.com/questions/31602

궁금증이 해결되셨길 바랍니다.

감사합니다.

0

yys

답변 부탁드리겠습니다ㅜ

리트코드 1280. Students and Examinations

0

74

3

16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문

0

89

2

African Cities 문제관련 질문

0

53

1

SQL 코딩테스트 질문

0

206

1

HACKER RANK에서 문제찾기

0

94

2

강의 자료 다운로드

0

90

2

Asian population 문제가 없어요

0

76

2

INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'

0

65

2

별칭 관련해서 질문 있습니다.

0

78

2

rising temperature 문제 질문

0

98

2

해커랭크 TOP EARNERS 문제 질문

0

98

1

ON 뒤에 질문

0

94

2

INNER JOIN 질문. 강의와 결과값이 다릅니다.

0

196

3

END, 뒤에 * 붙이면 에러가 뜹니다

1

203

2

CustomerID가 중복되서 나타나요

0

232

3

별칭이 전체 테이블을 못 불러와요.

0

142

2

CASE WHEN 쿼리 오류 문의

1

324

3

CASE문제풀이 질문

0

124

1

Customers Who Never Order 풀다가 Alias관련 질문사항

0

136

1

Average Population 질문

0

128

1

Revising Aggregations - The Count Function 질문

0

103

1

Average Population of Each Continent 에대해서 질문

0

191

3

w3schools 에서 쿼리 작성 질문

0

158

1

INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?

0

328

1