개발은 처음이라 개발새발

해커랭크 Top Earners 문제 풀이 [MySQL] 본문

mysql

해커랭크 Top Earners 문제 풀이 [MySQL]

leon_choi 2023. 4. 23. 20:21
반응형

https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search 

 

Top Earners | HackerRank

Find the maximum amount of money earned by any employee, as well as the number of top earners (people who have earned this amount).

www.hackerrank.com

 

이번에는 group by와 관련된 간단한 퀴즈를 풀어보겠습니다. 문제를 해석해보면 months와 salary를 곱해 earings라는 컬럼을 만들고 가장 높은 earings과 해당 earings를 기록한 사람이 몇명인지를 카운트해보라는 것을 알 수 있는데요. 우선 쿼리를 시작해보면

SELECT (months * salary) AS earnings 
FORM employee

이렇게 earnings를 생성할 수 있습니다. 그다음에는 해당 earnings에 몇명이나 있는지 파악해야 겠죠. earnings들의 개수를 파악하기 위해서는 우선 earnings를 group by 해야 합니다. 그리고 count 함수를 사용하면 됩니다. 하지만 퀴즈에서 원하는 답은 가장 많은 earnings를 기록한 금액과 해당 금액의 인원인데요. 이를 위해서는 order by를 통해 내림 차순을 만들고 행의 노출을 하나만 하면 됩니다. 최종쿼리를 보겠습니다.

SELECT (months * salary) AS earnings, COUNT(*) 
FORM employee
GORUP BY earnings
ORDER BY earnings DESC
LIMIT 1
반응형