inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4번 문제 풀이

MIN 관련 질문이 있어요!

165

최원빈

작성한 질문수 45

0

안녕하세요:) 강의 잘 듣고 있어요

현 게시판에 이미 게시되어있는 MIN에 관한 질문이 있어서 이렇게 글을 남겨요.

피봇팅을 할때 마지막에 MIN을 붙여서 쿼리를 완성하셨는데, 

그렇다면 만약에 MIN을 붙이지 않아도 되는 건가요?

 

MIN을 안 붙이고 했는데 오류가 뜨더라고요. 이 부분에 대해 설명해주시면 감사드릴게요!

 

SELECT CASE WHEN Occupation = 'Doctor' THEN Name Else Null END

     , CASE WHEN Occupation = 'Professor' THEN Name Else Null END

     , CASE WHEN Occupation = 'Singer' THEN Name Else Null END

     , CASE WHEN Occupation = 'Actor' THEN Name Else Null END

FROM (

        SELECT occupation

             , name

             , ROW_NUMBER() over (PARTITION BY Occupation ORDER BY Name) rn

        FROM Occupations

     ) AS a

GROUP BY rn

ORDER BY rn;

sql

답변 1

0

지식공유자 J

피봇팅을 할 때는 MIN, MAX, AVG, SUM 등 집계 함수를 꼭 써 주셔야 합니다.

적어 주신 쿼리는 아래와 같은 Occupations 테이블의 row를 하나씩 체크하면서 4개의 컬럼 값을 채워 나갑니다.

첫 번째 row의 occupation은 doctor 이므로 첫 번째 컬럼에 name(samantha)가 들어가고, 나머지 컬럼에는 null이 들어갑니다.

두 번째 row의 occupation은 actor 이므로 네 번째 컬럼에 name(julia)가 들어가고, 나머지 컬럼에는 null이 들어갑니다.

이런 일을 마지막 row까지 반복하고 나면 아래와 같은 테이블이 만들어 집니다.

그런데 우리가 원하는 결과물은 이렇게 null로 구멍이 뚫린 모습이 아니라 rn 값 순으로 위에서부터 값이 채워진 테이블이죠. 

그래서 rn을 기준으로 그룹을 묶어 그 그룹 내에서 집계를 하는 것입니다.

유일한 이름(ex- samantha)와 null들 사이에서 MIN, MAX, AVG, SUM 등 어떤 집계를 하든 답은 유일한 이름 값으로 나오기 때문에 꼭 MIN이 아니어도 됩니다.

 

강의기간 연장문의

0

107

2

HackerRank : Weather Observation Station 11 문제풀이

0

124

1

SET4의 3번 자리바꾸기 문제 다른 풀이

0

197

1

set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문

0

277

2

set 1 - 2번 문제풀이

0

270

1

세트2번 Binary Tree Nodes 질문입니다!

0

231

2

고급문제풀이set1 3번 문제

0

255

2

고급문제풀이 3번 INNERJOIN 활용시 오류

0

274

1

회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ

0

325

1

[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?

0

382

1

[Weather 20] 따라 했는데 왜 작동 안해요?

0

283

1

weather-20 왜 작동 안하는건가요?

0

234

1

Ollivander's Inventory 윈도우 함수 min() over

0

320

1

LeetCode 626. Exchange Seats 리트코드 제출 오류

0

510

2

섹션4에 3번 문제풀이 질문

0

387

2

SQL Project Planning 풀이 관련 문의

0

589

2

섹션 1번 4번문제 풀이

1

290

1

섹션1 2번 문제풀이 강의

0

309

1

set2 - 1 같게 작성했는데 답이 이상합니다.

0

289

1

max함수를 써서 풀지는 못하나요?

0

306

1

윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?

0

265

1

(Hacker Rank)Binary Tree 문제 질문

0

329

1

쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.

0

300

1

이런 풀이는 왜 안되는지 궁금해요

0

280

1