Anusha Murali

Logo

Please see github.com/anusha-murali for all of my repositories.

View GitHub Profile

39. Top Earners: Solution


We define an employee’s total earnings to be their monthly salary × 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.

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

37_1

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 their monthly salary.

Sample Input

37_2

Sample Output

69952 1

Explanation

The table and earnings data is depicted above.

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.

solution_image5

We want to compute MONTHS*SALARY and count how many times each MONTHS*SALARY value is occurring. Then, we want to find the maximum value of MONTHS*SALARY and the number of times it occurs. This can be achieved in Oracle as follows:

SELECT * FROM
  (
      SELECT MONTHS*SALARY, COUNT(*)
      FROM EMPLOYEE
      GROUP BY MONTHS*SALARY
      ORDER BY MONTHS*SALARY DESC
  )
WHERE ROWNUM <= 1;

The inner most query in the above solution orders the rows in descending values of MONTHS*SALARY, and the outermost query returns the topmost row, which corresponds to the maximum value of MONTHS*SALARY.


Back to problems


anusha-murali.github.io