강의

멘토링

커뮤니티

Inflearn Community Q&A

goldsurfer's profile image
goldsurfer

asked

[Practice Makes Perfect] Intermediate SQL for Data Analysis

GROUP BY HackerRank Problem Solving

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

Written on

·

405

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까지 모두 적용이 된 이후의 결과값을 카운팅 하는 이유가 뭔가요?

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

 

sql

Answer 2

1

bomin님의 프로필 이미지
bomin
Instructor

안녕하세요 이상현님

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

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

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

0

goldsurfer님의 프로필 이미지
goldsurfer
Questioner

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

답변 감사합니다!^^

goldsurfer's profile image
goldsurfer

asked

Ask a question