본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] Hacker Rank - Top Earners

by kime2 2024. 6. 7.
출처

 

문제

우리는 직원의 총 수입을 월별 수입으로 정의합니다.근무했으며 최대 총 수입은 Employee 테이블 에 있는 모든 직원의 최대 총 수입이 됩니다 . 전체 직원의 최대 총 소득 과 최대 총 소득을 얻은 직원의 총 수를 구하는 쿼리를 작성하세요 . 그런 다음 이 값을 다음과 같이 인쇄합니다.공백으로 구분된 정수.

 

문제에 대한 해석

months X salary의 최대 금액과 해당 금액의 직원수 

풀이(MYSQL)

    select months*salary , count(name)
    from EMPLOYEE e
    where months*salary = (select max(months*salary)
                      from EMPLOYEE m )
    group by months*salary

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. FROM 절: EMPLOYEE테이블에서
  2. WHERE 절: months*salary와 months*salary의 최대값의 같은 경우를 필터링 하여
  3. GROUP BY 절: months*salary로 그룹화 한 경우
  4. SELECT 절: months*salary값과 해당( months*salary의 최대값) 이름의 개수를 출력

 

다른사람 풀이

SELECT months*salary
	 , count(*)
FROM Employee
GROUP BY months*salary
HAVING months*salary = (SELECT max(months*salary) FROM employee)
  • months * salary의 그룹화를 먼저하고 서브쿼리를 통해 months * salary와 최대값이 같은 경우 필터링(having)

 

배운점

  • 집계함수를 사용할 경우 집계된 값과 그에 상응하는 값을 출력하는 방법