Hello coders, today we are going to solve Top Earners HackerRank Solution in SQL.
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.
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.
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.
Solution – Top Earners in SQL
select max(months * salary), count(months * salary) from Employee where (months * salary) = (select max(months * salary) from Employee);
Disclaimer: The above Problem (Top Earners) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.
6 thoughts on “Top Earners in SQL | HackerRank Solution”
SELECT MAX(salary*months),COUNT(employee_id) from Employee
GROUP BY salary*months
ORDER BY salary*months DESC
SELECT salary * months AS earnings, COUNT(employee_id)
GROUP BY earnings
ORDER BY earnings DESC
Group b y cannot be used on aggregated values
with earning_monthly as (select months*salary as earning from employee),
max_earning as ( select max ( earning) as earning_max from earning_monthly)
select max ( earning_monthly.earning ) , count(*) from earning_monthly join max_earning on earning_monthly.earning=max_earning.earning_max;
// what is wrong in this query
where salary*months=(select max (salary*months) from Employee)
group by salary*months;
select months*salary, count(*) from employee
group by months*salary
order by months*salary desc