美文网首页
每日Leetcode—SQL(5)

每日Leetcode—SQL(5)

作者: Chuck_Wu | 来源:发表于2019-04-21 17:39 被阅读0次

184. 部门工资最高的员工

Employee
Department
结果

方法一:

select d.Name Department, e.Name Employee, e.Salary
from Employee e,Department d
where e.Department=d.Id and e.Salary = 
(select max(Salary) from Employee where Department=d.Id)

方法二:

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

分析:该方法的执行时间比方法一有所提升

185.部门工资前三高的员工

Employee
Department
结果

方法:

select d.Name Department, e1.Name Employee, e1.Salary
from Employee e1,Employee e2,Department d
where e1.DepartmentId=e2.DepartmentId and e1.Salary<=e2.Salary and e1.DepartmentId=d.Id 
group by e1.Name
having count(distinct e2.Salary) <= 3
order by d.Name,e1.Salary desc

分析:首先将表进行有条件内连,将比e2薪水少的e1行全部列出;进行group by,将e1中重复的数据去除;进行count聚合函数计算,distinct是确保前三高薪水的员工包含在最终的表内;最后进行排序。

相关文章

  • 每日Leetcode—SQL(5)

    184. 部门工资最高的员工 方法一: 方法二: 分析:该方法的执行时间比方法一有所提升 185.部门工资前三高的...

  • 每日Leetcode—SQL(1)

    175.组合两个表 编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 ...

  • 每日Leetcode—SQL(2)

    177.第N高的薪水 方法: 分析:此题可以参照(176.第二高的薪水)的思路来解题,176中使用了limit 1...

  • 每日Leetcode—SQL(3)

    180.连续出现的数字 方法一: 分析:该方法首先使用left join将表连接起来,再使用where查找满足条件...

  • 每日Leetcode—SQL(4)

    182. 查找重复的电子邮箱 方法一: 分析:该方法使用聚合函数,利用having查找Email大于1的值。 方法...

  • 每日Leetcode—SQL(6)

    196.删除重复的电子邮箱 方法一: 197.上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来...

  • 每日Leetcode—SQL(7)

    620. 有趣的电影 作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (...

  • LeetCode-SQL-超过5名学生的课程

    LeetCode-596-超过5名学生的课程 今天带来的是LeetCode for SQL的第三题,主要考察的是g...

  • LeetCode | SQL | 5题

    175. Combine Two Tables FirstName, LastName, City, State ...

  • LeetCode-SQL-eight

    Leetcode-sql-eight 本文中总结了LeetCode中关于SQL的游戏玩家分析的4个题目 玩家首次登...

网友评论

      本文标题:每日Leetcode—SQL(5)

      本文链接:https://www.haomeiwen.com/subject/ckcjgqtx.html