[LeetCode] 176.Second Highest Salary 第二高薪水

Write a SQL query to get the second highest salary from the Employee table.

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the second highest salary is 200. If there is no second highest salary, then the query should return null.

这道题让我们找表中某列第二大的数,这道题有很多种解法,先来看一种使用Limit和Offset两个关键字的解法,MySQL中Limit后面的数字限制了我们返回数据的个数,Offset是偏移量,那么如果我们想找第二高薪水,我们首先可以先对薪水进行降序排列,然后我们将Offset设为1,那么就是从第二个开始,也就是第二高薪水,然后我们将Limit设为1,就是只取出第二高薪水,如果将Limit设为2,那么就将第二高和第三高薪水都取出来:

解法一:

SELECT Salary FROM Employee GROUP BY SalaryUNION ALL (SELECT NULL AS Salary)ORDER BY Salary DESC LIMIT 1 OFFSET 1;

解法二:

SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN(SELECT MAX(Salary) FROM Employee);

解法三:

SELECT MAX(Salary) FROM EmployeeWhere Salary <(SELECT MAX(Salary) FROM Employee);

解法四:

SELECT MAX(Salary) FROM Employee E1WHERE 1 =(SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2WHERE E2.Salary > E1.Salary);

https://leetcode.com/discuss/47041/very-very-simple-solution

https://leetcode.com/discuss/42849/general-solution-not-using-max

https://leetcode.com/discuss/21751/simple-query-which-handles-the-null-situation

更多相关文章

  1. 【DB笔试面试49】在Oracle中,你需要创建索引提高薪水审查的性能,该
  2. 2020年最新Android大厂面试题全集整理,只为你进BAT增强50%的成功
  3. 2020年最新Android大厂面试题 只为你进BAT增加50%的成功率
  4. 老司机理性分析:我的十年Android坎坷之路,风雨之后终见彩虹
  5. 七个月Android学习工作总结(随时补充)
  6. 安卓Android开发视频教程大全50GB/安卓基础+进阶+高级+项目+源码
  7. Python数据可视化:浅谈数据挖掘岗
  8. SQL今日一题(21):3个子查询
  9. SQL今日一题(15):子查询

随机推荐

  1. TabHost+Fragment分析
  2. Android 在程序界面上显示图片
  3. android configChanges
  4. android定位功能(二)
  5. Android工具库
  6. Android 6.0 Ethernet流程分析记录
  7. 如何让Android横竖屏切换时不销毁当前act
  8. Android中一些比较好的开源代码项目
  9. Android(安卓)Service的启动流程源码分析
  10. 【Android】安卓中常用的图片加载方法