인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

오민영님의 프로필 이미지
오민영

작성한 질문수

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

GROUP BY 해커랭크 문제풀이

가장 큰 값을 가져오는 다른 방법도 있을까요?

작성

·

653

0

안녕하세요 선생님~! 강의를 듣다 이 문제를 다르게 푸는 방법도 있을까 궁금해져서 질문드립니다.

1.

스텝별로 풀이는 설명해주실 때, 3.earning 중에 가장 큰 값을 가져온다 라는 부분은 limit 1로 큰 값만 출력되게 해주셨는데요. 혹시 이 부분을 select 절에서 다른 구문으로 출력하게 하는 것도 가능할까요?

select max(salary*months as earnings), count(*)
from employee
group by earnings

(쿼리를 돌려보았을 땐 잘못된 답이라고 나오긴 하네요..ㅎㅎ)

2.

아래 쿼리 중에 잘못 작성된 내용이 있을까요? 똑같은 쿼리로 적은 것 같은데 계속 잘못된 답이라고 응답이 뜨네요..!

/*
select salary * months AS earnings, count (*)
from Employee
group by earnings
order by earnings desc
limit 1 
*/

답변 1

1

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

  1. SELECT와 MAX를 사용해서 구하려면 SELECT 절이 하나가 더 필요합니다.
    이렇게 쿼리 안에 또 다른 쿼리를 쓰는 것을 서브쿼리라고 합니다.
    저희 커리큘럼에서는 서브쿼리를 고급반에서 다룹니다만 아래 쿼리와 주석을 참고하면 이해가 되실 거에요.

    SELECT salary * months AS earnings, COUNT()
    FROM employee
    GROUP BY earnings
    HAVING earnings = (-- 1. salary * months 의 최대값 구하기
                       SELECT MAX(salary * months) 
                       FROM employee)  -- 2. 1에서 구한 최대값과 동일한 값을 갖는 row를 추출

     

  2. count (*) 에서 count와 괄호 사이를 붙여서 count(*) 라고 작성하면 잘 작동됩니다.

오민영님의 프로필 이미지
오민영

작성한 질문수

질문하기