강의

멘토링

커뮤니티

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

김주현님의 프로필 이미지
김주현

작성한 질문수

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

서브쿼리 해커랭크 문제풀이

해커랭크 Top Earners 질문!

작성

·

307

0

안녕하세요! 해커랭크 Top Earners 문제에 관해 질문드리겠습니다.

 

where 절에 서브쿼리를 사용할 때,

select salary*months as earnings, count(*)

from employee

where salary*months = (select max(salary*months) from employee)

 

위의 코드를 작성했을때 group by 없이는 집계함수를 사용할 수 없다는 오류가 뜨는데,

 

select count(*)

from employee

where salary*months = (select max(salary*months) from employee)

 

select 에 count만 출력했을 때는 문제 없이 코드가 실행됩니다!

count 단독으로 출력할 때는 전체 갯수만 파악하지만 salary*months 까지 같이 출력할 때는 해당 salary*months에 맞게 count를 해야해서 집계함수를 사용해야 하는 걸까요?

어짜피 max값만 가져와서 출력하는데도 group by를 꼭 사용해야 하는걸까요?

 

답변 1

0

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

count 단독으로 출력할 때는 전체 갯수만 파악하지만 salary*months 까지 같이 출력할 때는 해당 salary*months에 맞게 count를 해야해서 집계함수를 사용해야 하는 걸까요?
-> 맞습니다. select 절에 집계함수(count)와 집계함수가 아닌 컬럼이 같이 들어갈 경우, 컬럼을 기준으로 묶은 그룹마다 집계를 하는 것이 됩니다.
group by를 사용하고 싶지 않다면 두번째 쿼리처럼 작성하시면 됩니다.

김주현님의 프로필 이미지
김주현

작성한 질문수

질문하기