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

이상현님의 프로필 이미지
이상현

작성한 질문수

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

GROUP BY 해커랭크 문제풀이

해설내용에서 함수의 실행순서 질문드립니다

작성

·

309

0

SELECT months * salary AS earnings, COUNT(*)

FROM Employee

GROUP BY earnings

ORDER BY earnings DESC

LIMIT 1;

 

위의 SELECT 문 내에서,

months * salary AS earnings 부분은 먼저 실행이 되어, 밑의 GROUP BY 나 ORDER BY 등에 영향을 미치는데, 

 

COUNT(*) 는 LMIT 1까지 모두 적용이 된 이후의 결과값을 카운팅 하는 이유가 뭔가요?

집계함수는 항상 최종적인 결과값에 대해 적용이 되는 건가요?

 

답변 2

1

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

안녕하세요 이상현님

전달주신 쿼리의 실행 순서는 FROM -> GROUP BY  -> SELECT -> ORDER BY -> LIMIT 순 입니다.

만약 LIMIT 1까지 모두 적용이 된 후의 결과를 카운팅 해주는 방식으로 쿼리가 작동된다면 내부에 데이터 값이 몇개든 상관 없이 COUNT(*)의 결과는 1로 고정되어야 하는데요. 쿼리 결과는 그렇게 나오지는 않습니다. 결과값을 다시 한 번 천천히 확인해보시면 좋을 것 같습니다.

쿼리 순서와 관련한 참고 자료를 첨부드립니다.

0

이상현님의 프로필 이미지
이상현
질문자

아 그렇군요,. 잘못 생각했네요

답변 감사합니다!^^

이상현님의 프로필 이미지
이상현

작성한 질문수

질문하기