Welcome to Subscribe On Youtube
177. Nth Highest Salary
Description
Table: Employee
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ id is the primary key (column with unique values) for this table. Each row of this table contains information about the salary of an employee.
Write a solution to find the nth
highest salary from the Employee
table. If there is no nth
highest salary, return null
.
The result format is in the following example.
Example 1:
Input: Employee table: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ n = 2 Output: +------------------------+ | getNthHighestSalary(2) | +------------------------+ | 200 | +------------------------+
Example 2:
Input: Employee table: +----+--------+ | id | salary | +----+--------+ | 1 | 100 | +----+--------+ n = 2 Output: +------------------------+ | getNthHighestSalary(2) | +------------------------+ | null | +------------------------+
Solutions
Change the 1 after OFFSET
to N-1
, but then MySQL will report an error and it is estimated that the operation is not supported. Then we can add a SET N = N-1
in front.
-
import pandas as pd def nth_highest_salary(employee: pd.DataFrame, N: int) -> pd.DataFrame: unique_salaries = employee.salary.unique() if len(unique_salaries) < N: return pd.DataFrame([np.NaN], columns=[f"getNthHighestSalary({N})"]) else: salary = sorted(unique_salaries, reverse=True)[N - 1] return pd.DataFrame([salary], columns=[f"getNthHighestSalary({N})"])
-
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN DECLARE M INT; SET M=N-1; # index issue RETURN ( # Write your MySQL query statement below. SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET M ); END