最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL實(shí)現(xiàn)LeetCode(176.第二高薪水)

 更新時(shí)間:2021年08月03日 14:51:49   作者:Grandyang  
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(176.第二高薪水),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[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.

這道題讓我們找表中某列第二大的數(shù),這道題有很多種解法,先來看一種使用Limit和Offset兩個(gè)關(guān)鍵字的解法,MySQL中Limit后面的數(shù)字限制了我們返回?cái)?shù)據(jù)的個(gè)數(shù),Offset是偏移量,那么如果我們想找第二高薪水,我們首先可以先對薪水進(jìn)行降序排列,然后我們將Offset設(shè)為1,那么就是從第二個(gè)開始,也就是第二高薪水,然后我們將Limit設(shè)為1,就是只取出第二高薪水,如果將Limit設(shè)為2,那么就將第二高和第三高薪水都取出來:

解法一:

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

我們也可以使用Max函數(shù)來做,這個(gè)返回最大值,邏輯是我們?nèi)〕龅牟话畲笾档臄?shù)字中的最大值,即為第二大值:

解法二:

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

下面這種方法和上面基本一樣,就是用小于號<代替了Not in關(guān)鍵字,效果相同:

解法三:

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

最后來看一種可以擴(kuò)展到找到第N高的薪水的方法,只要將下面語句中的1改為N-1即可,第二高的薪水帶入N-1就是1,下面語句的邏輯是,假如我們要找第二高的薪水,那么我們允許其中一個(gè)最大值存在,然后在其余的數(shù)字中找出最大的,即為整個(gè)的第二大的值;

解法四:

SELECT MAX(Salary) FROM Employee E1
WHERE 1 =
(SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
WHERE 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

到此這篇關(guān)于SQL實(shí)現(xiàn)LeetCode(176.第二高薪水)的文章就介紹到這了,更多相關(guān)SQL實(shí)現(xiàn)第二高薪水內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

正镶白旗| 玛沁县| 柳江县| 吉安市| 宁乡县| 四会市| 石首市| 屏南县| 金寨县| 苍梧县| 宜春市| 九龙城区| 花莲县| 体育| 长葛市| 绥芬河市| 望谟县| 长宁区| 自治县| 图们市| 灵寿县| 洞头县| 长武县| 铜陵市| 平乐县| 金川县| 金昌市| 轮台县| 长岭县| 顺平县| 青铜峡市| 阿拉善左旗| 福建省| 伊川县| 新沂市| 怀宁县| 桃园县| 读书| 武功县| 鹤山市| 寿阳县|