MIN 관련 질문이 있어요!
165
작성한 질문수 45
안녕하세요:) 강의 잘 듣고 있어요
현 게시판에 이미 게시되어있는 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;
답변 1
0
피봇팅을 할 때는 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





