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

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

배워서 바로 쓰는 SQL 쿼리

실습 문제 3-4 (Functions)

질문드리겠습니다.

작성

·

261

0

select substr(birthdate, 1, 7) as month, count(*) as cnt

from Employees

group by month;

 

위와같은 쿼리를 이용하여 문제를 푸는 도중

처음에는 groupby month 를 사용하지 않았습니다.

그 결과 month 의 컬럼에는 1968-12 이 출력되어 나왔는데 제일 최근 년도도 아니고, 오래된 년도도 아니고 왜 이친구가 대표로 출력되어 나오는건가요..?

답변 1

0

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

안녕하세요 :)

질문 감사합니다.

 

1968-12 년도는 employees 테이블의 가장 첫줄에 등장하는 사원의 생일값이에요.

 

image

그루핑을 하지 않고 집계연산을 사용할 경우, DB에 따라 집계연산 사용을 막거나 가장 처음 값을 출력해주곤 합니다. (그루핑과 보통 같이 사용하는 것이 일반적인 용법이에요)

 

그루핑이 어떻게 작동하는지 살펴보면 이해에 도움이 되는데요, GROUP BY를 사용할 경우 해당 절에 설정해준 값을 기준으로 컴퓨터가 여러개의 주머니를 만들기 위해 해당 컬럼을 처음부터 끝까지 탐색하게 됩니다. 하지만 GROUP BY를 설정하지 않은 경우 birthdate 컬럼의 맨 처음에 등장한 값을 반환하는 것이죠. 그래서 이 경우는 해당 1968-12 값은 대표 기준값이 아닌 단순히 컴퓨터가 맨 처음 값을 반환한 값으로 봐주시면 됩니다.

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

질문하기