inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

Case 피봇 리트코드 문제 문의

432

khjsj

작성한 질문수 3

0

항상 좋은 답변 주셔서 감사드려요!

리트코드 문제 풀다가 궁금한 점이 있는데요..

아래 캡쳐는 문제 풀이 전에 제가 짜본 코드인데요.

월별 Revenue를 구하려면 Case를 Sum으로 묶어주면 된다고 하셨는데,

이 테이블 값들은 어차피 월별로 ID&revenue가 겹치는 값이 없어서, 제가 캡쳐한 내용과 같이 SUM으로 묶어주지 않아도 값들이 출력되어야 할 것 같은데...

SUM으로 묶어 주지 않으면 FEB, MAR의 ID=1인 revenue 값이 누락됩니다ㅠㅠ

집계함수를 묶어줄 떄와 묶어주지 않았을 때 왜 이런 차이가 생기는 걸까요?ㅠㅠ 뭔가 그룹핑하는 것과 관련이 있는 것 같은데 잘 모르겠네요...ㅠㅠ

 

 

sql

답변 1

1

지식공유자 J

select case when month = 'Feb' then revenue else null end 
from department

위 쿼리는 department의 모든 행을 하나씩 확인하며 해당 행의 month 값이 무엇인지에 따라 revenue 값 또는 null을 차례대로 반환합니다.
department의 첫 번째 행 month가 Feb가 아니면, output의 첫 번째 행은 null이 되는 것이죠.

그런데 피봇테이블은 여러 개의 행(null 또는 다른 값)을 필요로 하는 게 아니라 id 당 하나의 행만을 갖도록 만들고 싶습니다.
여러 값을 하나로 요약하려면 집계함수가 필요하므로 그 중 하나인 sum을 사용하는 것입니다.

리트코드 1280. Students and Examinations

0

77

3

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

0

90

2

African Cities 문제관련 질문

0

57

1

SQL 코딩테스트 질문

0

211

1

HACKER RANK에서 문제찾기

0

100

2

강의 자료 다운로드

0

91

2

Asian population 문제가 없어요

0

81

2

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

0

70

2

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

0

81

2

rising temperature 문제 질문

0

99

2

해커랭크 TOP EARNERS 문제 질문

0

102

1

ON 뒤에 질문

0

98

2

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

0

201

3

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

1

206

2

CustomerID가 중복되서 나타나요

0

236

3

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

0

145

2

CASE WHEN 쿼리 오류 문의

1

326

3

CASE문제풀이 질문

0

128

1

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

0

139

1

Average Population 질문

0

132

1

Revising Aggregations - The Count Function 질문

0

105

1

Average Population of Each Continent 에대해서 질문

0

194

3

w3schools 에서 쿼리 작성 질문

0

160

1

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

0

330

1