• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

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

22.10.05 23:32 작성 조회수 368

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

  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(*) 라고 작성하면 잘 작동됩니다.