表: Employee
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ 在 SQL 中,id 是该表的主键。 该表的每一行都包含有关员工工资的信息。
查询 Employee
表中第 n
高的工资。如果没有第 n
个最高工资,查询结果应该为 null
。
解题思路:
import pandas as pd
# 构造一个函数,包含两个变量:表,第几N
def nth_highest_salary(employee: pd.DataFrame, N: int):
# 对salary列删除重复行,方便后续对salary进行排序
employee = employee[['salary']].drop_duplicates()
# 如果N大于不同salary的个数
if N > employee.shape[0]:
# 重新构建一个dataframe,返回null,
return pd.DataFrame({'getNthhightesSalary(2)': [None]})
# 对salary列进行降序排序,取前N行的最后一列,及第N名
else:
return employee.sort_values(by='salary', ascending=False).head(N).tail(1)