SQL第二高的薪水

第二高的薪水:
描述
查询并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null(Pandas 则返回 None)

pandas

import pandas as pd

def second_highest_salary(employee: pd.DataFrame):
    # 1. 删除所有重复的薪水.
    employee = employee.drop_duplicates(["salary"])
    
    # 2. 如果少于 2 个不同的薪水,返回 `np.NaN`。
    if len(employee["salary"].unique()) < 2:
        return pd.DataFrame({"SecondHighestSalary": [np.NaN]})
    
    # 3. 把表格按 `salary` 降序排序。
    employee = employee.sort_values("salary", ascending=False)
    
    # 4. 删除 `id` 列。
    employee.drop("id", axis=1, inplace=True)
    
    # 5. 重命名 `salary` 列。
    employee.rename({"salary": "第二高"}, axis=1, inplace=True)
    
    # 6. 返回第 2 高的薪水
    return employee.head(2).tail(1)


SQL

方法一
SELECT
    IFNULL(
      (SELECT DISTINCT Salary
       FROM Employee
       ORDER BY Salary DESC
        LIMIT 1 OFFSET 1),
    NULL) AS SecondHighestSalary
方法二
select max(salary) as SecondHighestSalary 
from Employee
where salary < (select max(salary) from Employee);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lance_mu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值