力扣——数据库刷题 No.4

本文分享了两个SQL挑战题的解决方案,一是找出每个部门工资最高的员工,二是找出连续出现三次的数字。通过具体SQL代码示例,详细介绍了如何使用内连接和聚合函数解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日刷题:

  • 部门工资最高的员工
  • 连续出现的数字

1、部门工资最高的员工

在这里插入图片描述
解题思路:

  • 先求出每个部门中最高的工资(注意:一定不能求出最高工资员工的名称,因为一个部门的最高工资可能是多个人),得到结果临时表
  • 再根据部门和工资字段联合(必须为内连接,因为员工表和部门表的记录都有可能为空)查询临时表,判断当前员工工资是否是部门最高工资

SQL代码:

select d.Name as Department,e.Name as Employee,e.Salary as Salary
from Employee e join Department d
on e.DepartmentId = d.Id
where (e.DepartmentId, e.Salary) in(
    select e.DepartmentId,max(e.Salary) as Salary
    from Employee e
    group by e.DepartmentId
)

2、连续出现的数据

在这里插入图片描述
解题思路:

  • 此题因为本人SQL语法了解还不多,就只能先考虑记录的ID都是相邻的情况
  • 我们用三表连接的方式,直接就可以得出结果

SQL代码:

select distinct L1.Num as ConsecutiveNums
from Logs as L1,Logs as L2,Logs as L3
where L1.Id = L2.Id - 1
and L2.Id = L3.Id -1
and L1.Num = L2.Num
and L2.Num = L3.Num
and L1.Num = L3.Num
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值