인프런 커뮤니티 질문&답변

positivejmk님의 프로필 이미지
positivejmk

작성한 질문수

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

4번 문제 풀이

Group by 사용 시 SELECT 절에 언급 관련

작성

·

913

0

안녕하세요. 

SQL 초급에서 GROUP BY 를 사용할 때는, 그룹화의 기준이 되는 컬럼을 SELECT 구문에 반드시 적으라고 배웠던 것으로 기억합니다.

그런데 이 문제에서는 GROUP BY 에 rn을 적었지만 SELECT 에 rn을 지운 상태로 결과물을 출력하게 되더라구요. 

그래서 GROUP BY에 사용한 컬럼을 어떤 경우에는 반드시 적어야 하고, 또 어떤 경우에는 적지 않아도 괜찮은지 궁금합니다.

 

그럼 편하신 때에 답변 부탁드리겠습니다.

감사합니다!

답변 1

1

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

GROUP BY 를 하는 이유는 어떤 기준(컬럼)으로 데이터를 나눠서, 각 항목별로 집계를 하기 위함입니다.
그런데 이 기준이 눈에 보이지 않는다면 집계된 데이터가 무엇에 해당하는 것인지 알기가 어렵습니다.
그렇기 때문에 기준이 되는 컬럼도 SELECT 절에 기입함으로써 결과물에 출력되도록 하는 경우가 일반적입니다.

예를 들어, 과일 종류별로(GROUP BY 과일) 매출 총합을 구했다면 
apple | 300 
orange | 200
strawberry | 100 
이런 식의 결과물이 나와야 할 텐데요.
만약 SELECT 절에 '과일' 컬럼을 넣지 않아 위 예시의 첫번째 컬럼에 해당하는 과일 이름 값이 모두 제외된다면 매출이 300달러인 과일이 사과인지, 딸기인지 알 수가 없겠죠.  

다만, SELECT 절에 포함되지 않는다고 해서 쿼리 자체가 작동하지 않는 것은 아닙니다. 
이 문제에서는 피봇 테이블 형태를 만드는 과정을 위해 GROUP BY를 사용했고, output에 랭킹에 해당하는 컬럼이 포함되지 않기를 요구했습니다. 
이처럼 원하는 데이터 형태에 맞게 쿼리를 작성하시면 되겠습니다. 

positivejmk님의 프로필 이미지
positivejmk
질문자

네 잘 이해되었습니다 :) 답변 감사드립니다!

positivejmk님의 프로필 이미지
positivejmk

작성한 질문수

질문하기