본문 바로가기
MySQL/문제풀이

[HackerRank] 서브쿼리 : Top Earners

by MINNI_ 2021. 3. 26.

1. 문제

 

We define an employee's total earnings to be their monthly salary X months worked, and the maximum total earnings to be the maximum total earnings for any employee in the Employee table. Write a query to find the maximum total earnings for all employees as well as the total number of employees who have maximum total earnings. Then print these values as 2 space-separated integers.

Input Format

The Employee table containing employee data for a company is described as follows:

where employee_id is an employee's ID number, name is their name, months is the total number of months they've been working for the company, and salary is the their monthly salary.

Sample Input

Sample Output

69952 1

Explanation

The table and earnings data is depicted in the following diagram: 

The maximum earnings value is 69952. The only employee with earnings =69952 is Kimberly, so we print the maximum earnings value (69952) and a count of the number of employees who have earned $69952 (which is 1) as two space-separated values.


2. 답

 

  • WHERE절 서브 쿼리를 이용한 풀이
SELECT salary * months AS earnings, COUNT(*)
FROM employee
WHERE salary * months = (SELECT MAX(salary * months) FROM employee)
GROUP BY earnings

 

  • HAVING절 서브 쿼리를 이용한 풀이
SELECT salary * months AS earnings, COUNT(*)
FROM employee
GROUP BY earnings
HAVING earnings = (SELECT MAX(salary * months) FROM employee)

 

  • ORDER BY와 LIMIT을 이용한 풀이
SELECT salary * months AS earnings, COUNT(*)
FROM employee
GROUP BY earnings
ORDER BY earnings DESC
LIMIT 1

3. KEY POINT

 

  • SELECT에서 지정한 별명은 WHERE절에서는 못쓰고, GROUP BY에서는 가능
  • COUNT( )가 집계함수이므로, 집계화된 컬럼과 함께 쓰일 수 있음

 

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

댓글