今日刷题:
- 部门工资最高的员工
- 连续出现的数字
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