[Leetcode]SecondHighestSalary

来源:https://www.cnblogs.com/qiuhuashan/archive/2019/06/19/11055699.html
-Advertisement-
Play Games

題目 編寫一個 SQL 查詢,獲取 表中第二高的薪水(Salary) 。 例如上述 表,SQL查詢應該返回 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 。 解決方案 方法一 :使用 和 子句 將不同的薪資按降序排序,然後使用 子句獲得第二高的薪資。 然而,如果沒有這樣的第二最高工資,這 ...


題目
編寫一個 SQL 查詢,獲取 Employee 表中第二高的薪水(Salary) 。

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

例如上述 Employee 表,SQL查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+

解決方案

方法一:使用子查詢LIMIT 子句

將不同的薪資按降序排序,然後使用 LIMIT 子句獲得第二高的薪資。

SELECT DISTINCT
    Salary AS SecondHighestSalary
FROM
    Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1;

然而,如果沒有這樣的第二最高工資,這個解決方案將被判斷為 “錯誤答案”,因為本表可能只有一項記錄。為了剋服這個問題,我們可以將其作為臨時表。

SELECT
    (SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET 1) AS SecondHighestSalary;

方法二:使用 IFNULLLIMIT 子句
解決 “NULL” 問題的另一種方法是使用 “IFNULL” 函數,如下所示。

SELECT
    IFNULL(
      (SELECT DISTINCT Salary
       FROM Employee
       ORDER BY Salary DESC
        LIMIT 1 OFFSET 1),
    NULL) AS SecondHighestSalary;

方法三:使用Max函數來做,邏輯是我們取出的不包含最大值的數字中的最大值,即為第二大值。然後使用Not in

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

方法四:和上面基本一樣,就是用小於號<代替了Not in關鍵字,效果相同

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

摘自:
https://leetcode-cn.com/classic/problems/second-highest-salary/solution/
https://www.cnblogs.com/grandyang/p/5348961.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Mongodb 是基於集合建立索引 (Index),索引的作用類似於傳統關係型資料庫,目的是為了提高查詢速度 。 如果沒有建立索引, Mongodb 在讀取數據時必須掃描集合中的 所有文檔記錄。 這種全集合掃描效率是非常低的,尤其在處理大數據時,查詢可能需要花費幾十秒到幾分鐘的時間,這對基於互聯網應 ...
  • 今天在創建資料庫的時候,遇到了沒有創建資料庫許可權的問題,後來百度了一下解決了該問題。 1.先用windows身份驗證登錄,在安全性下麵的找到自己創建的登錄名,雙擊,在彈出的對話框中為它賦予許可權。 2.設置完後退出,然後登錄,這樣就可以創建資料庫了 ...
  • 大數據如此火熱的現在,想必許多小伙伴都想要加入這個行業。也是我們今天就要拿出收藏已久的大數據學習計劃。幫助你不走彎路,邁向大數據 1 大數據應用離不開基礎軟體的支撐,且大部分大數據組件部署在 Linux 操作系統上的用戶空間,也有很多組件也借鑒了Linux 操作系統的一些設計精髓,所以 Linux ...
  • MongoDB 是一款開源、跨平臺、分散式,具有大數據處理能力的文檔存儲資料庫。在 2007 年由 MongoDB 軟體公司開發完成,並實現全部代碼源發展。目 前,該文檔資料庫被國內外眾多知名網因所採納,用於提高數據訪問的處理速度 和大數據存儲問題。 基本操作命令 : show dbs : 顯示所有 ...
  • 找出employee表的所有外鍵約束 Result: 此時如果想刪除和posId相關的外鍵,只需要 找出以employee為REFERENCED_TABLE的所有約束 Result: ...
  • 開發同事反饋一個SQL Server存儲過程執行的時候,報“鏈接伺服器"(null)"的 OLE DB 訪問介面 "SQLNCLI10" 返回了消息 "Cannot start more transactions on this session."。這個存儲過程,個人做了一個精簡和脫敏處理後如下: ... ...
  • 大數據時代,給想從事IT的人帶來了新的發展機會,也提供了新的職業發展通道。在面對眾多的大數據就業崗位,我們應該選擇什麼樣的職業發展方向,並去學習相應技能達到企業要求呢? ...
  • Oracle 伺服器主要又實例、資料庫、程式全局區和前臺進程組成。 實例可以進一步劃分為系統全局區(SGA)和後臺進程(PMON、SMON等)兩部分,其中,SGA 使用操作系統的記憶體資源,而後臺進程需要使用 CPU 與記憶體資源。資料庫(Database)中包含數據文件(Data files)、控制文 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...