欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年08月03日 14:51:49   作者:Grandyang  
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(176.第二高薪水),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(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ù),這道題有很多種解法,先來(lái)看一種使用Limit和Offset兩個(gè)關(guān)鍵字的解法,MySQL中Limit后面的數(shù)字限制了我們返回?cái)?shù)據(jù)的個(gè)數(shù),Offset是偏移量,那么如果我們想找第二高薪水,我們首先可以先對(duì)薪水進(jìn)行降序排列,然后我們將Offset設(shè)為1,那么就是從第二個(gè)開(kāi)始,也就是第二高薪水,然后我們將Limit設(shè)為1,就是只取出第二高薪水,如果將Limit設(shè)為2,那么就將第二高和第三高薪水都取出來(lái):

解法一:

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

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

解法二:

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

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

解法三:

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

最后來(lái)看一種可以擴(kuò)展到找到第N高的薪水的方法,只要將下面語(yǔ)句中的1改為N-1即可,第二高的薪水帶入N-1就是1,下面語(yǔ)句的邏輯是,假如我們要找第二高的薪水,那么我們?cè)试S其中一個(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 5.6.21 安裝與配置詳細(xì)步驟

    mysql 5.6.21 安裝與配置詳細(xì)步驟

    這篇文章主要介紹了mysql5.6.21安裝與配置的詳細(xì)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Mysql連接join查詢?cè)碇R(shí)點(diǎn)

    Mysql連接join查詢?cè)碇R(shí)點(diǎn)

    在本文里我們給大家整理了一篇關(guān)于Mysql連接join查詢?cè)碇R(shí)點(diǎn)文章,對(duì)此感興趣的朋友們可以學(xué)習(xí)下。
    2019-02-02
  • MySQL數(shù)據(jù)庫(kù)遷移實(shí)戰(zhàn)

    MySQL數(shù)據(jù)庫(kù)遷移實(shí)戰(zhàn)

    數(shù)據(jù)庫(kù)遷移是指將一個(gè)數(shù)據(jù)庫(kù)從一種系統(tǒng)轉(zhuǎn)移到另一種系統(tǒng)或從一臺(tái)服務(wù)器遷移到另一臺(tái)服務(wù)器的過(guò)程,本文主要介紹了MySQL數(shù)據(jù)庫(kù)遷移實(shí)戰(zhàn),感興趣的可以了解一下
    2023-11-11
  • MySQL長(zhǎng)連接短連接面試精講

    MySQL長(zhǎng)連接短連接面試精講

    這篇文章主要為大家介紹了MySQL長(zhǎng)連接短連接面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • MySQL5.7完全卸載步驟詳解

    MySQL5.7完全卸載步驟詳解

    這篇文章主要介紹了MySQL5.7完全卸載的詳細(xì)步驟以及把中間遇到的問(wèn)題做了分析,需要的朋友跟著操作下吧。
    2018-02-02
  • 總結(jié)MySQL修改最大連接數(shù)的兩個(gè)方式

    總結(jié)MySQL修改最大連接數(shù)的兩個(gè)方式

    最大連接數(shù)是可以通過(guò)mysql進(jìn)行修改的,mysql數(shù)據(jù)庫(kù)修改最大連接數(shù)常用有兩種方法,今天我們分析一下這兩種方法之間的特點(diǎn)和區(qū)別,以便我們能更好的去維護(hù)mysql。下面我們來(lái)看一下mysql修改最大連接數(shù)的方法,希望文章能夠幫助到各位朋友。
    2016-08-08
  • 關(guān)于MySQL索引的幾點(diǎn)值得注意的事項(xiàng)

    關(guān)于MySQL索引的幾點(diǎn)值得注意的事項(xiàng)

    索引對(duì)查詢的速度有著至關(guān)重要的影響,MySQL索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的
    2014-07-07
  • Mysql字符串處理函數(shù)詳細(xì)介紹、總結(jié)

    Mysql字符串處理函數(shù)詳細(xì)介紹、總結(jié)

    這篇文章主要介紹了Mysql字符串處理函數(shù)詳細(xì)介紹、總結(jié),需要的朋友可以參考下
    2014-04-04
  • MySQL數(shù)據(jù)庫(kù)安裝和Navicat for MySQL配合使用教程

    MySQL數(shù)據(jù)庫(kù)安裝和Navicat for MySQL配合使用教程

    MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下公司。這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)安裝和Navicat for MySQL配合使用,需要的朋友可以參考下
    2019-06-06
  • Mysql?for?update導(dǎo)致大量行鎖的問(wèn)題

    Mysql?for?update導(dǎo)致大量行鎖的問(wèn)題

    這篇文章主要介紹了Mysql?for?update?導(dǎo)致大量行鎖的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論