• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

해커랭크 Top Earners 질문!

23.02.16 15:09 작성 조회수 186

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

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