<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 查找員工的第 N 高薪的 SQL 查詢 > 原文: [https://howtodoinjava.com/sql/sql-query-find-nth-highest-salary/](https://howtodoinjava.com/sql/sql-query-find-nth-highest-salary/) 如果您想擔任初級職位,要找到**的第 n 高薪水**是一個非常常見的面試問題。 大多數人逐個字符地學習它,但是很少有人了解此查詢的工作方式。 它的性能好壞是多少? 在這篇文章中,我們將學習這些東西。 我正在使用 MySQL 數據庫進行演示。 ```java Table of Contents 1\. Create the schema and populate table 2\. Write the query and verify the result 3\. How the query works 4\. Performance analysis ``` ## 1.創建數據庫架構并填充表 讓我們創建一個`Employee`表的簡單示例。 我們將用 ID 和雇員的工資填充此表。 我們將編寫查詢以在此表上找到第 n 高薪水。 創建一個新的數據庫架構。 ```java Create schema TestSQL; ``` 創建一個新表`Employee_Test`。 ```java CREATE TABLE Employee_Test ( ?? ?Employee_ID INT, ?? ?Employee_name Varchar(100), ?? ?Employee_Salary Decimal (10,2) ); ``` 用測試數據填充表。 ```java INSERT INTO Employee_Test VALUES (1,'Anish',1000); INSERT INTO Employee_Test VALUES (2,'Sushant',1200); INSERT INTO Employee_Test VALUES (3,'Rakesh',1100); INSERT INTO Employee_Test VALUES (4,'Manoj',1300); INSERT INTO Employee_Test VALUES (5,'Amit',1400); INSERT INTO Employee_Test VALUES (6,'Lokesh',1600); INSERT INTO Employee_Test VALUES (7,'Maneneder',1400); INSERT INTO Employee_Test VALUES (8,'Narendra',400); INSERT INTO Employee_Test VALUES (9,'Kaushal',1900); INSERT INTO Employee_Test VALUES (10,'Vikas',3400); INSERT INTO Employee_Test VALUES (11,'Sudhir',800); ``` ## 2\. 找到第 n 高薪水的 SQL 查詢 因此,正如我們大多數人所知,查詢是這樣寫的,以查找**第 N 高薪水**。 在下面的查詢中,我們看到如何在不使用`max`函數的情況下在 sql 中找到最高薪水。 ```java SELECT * FROM Employee_Test Emp1 WHERE ( n ) = ( ?? ??? ??? ??? ?SELECT COUNT( DISTINCT ( Emp2.Employee_Salary ) ) ?? ??? ??? ??? ?FROM Employee_Test Emp2 ?? ??? ??? ??? ?WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary ?? ??? ??? ?) ``` 在此,將`n`替換為任何數字。 例如,如果您必須找到第六高的薪水,則將 n 替換為 6。 ```java SELECT * FROM Employee_Test Emp1 WHERE (6) = ( SELECT COUNT( DISTINCT ( Emp2.Employee_Salary ) ) FROM Employee_Test Emp2 WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary ) ``` 上面的查詢將產生下面的結果。 ![nth_highest_salary](https://img.kancloud.cn/4a/59/4a59e1b2ced9422ba58ef7ec995ffb86_716x320.png) ## 3.查詢的工作方式 如我們所見,該查詢涉及內部查詢的使用。 內部查詢可以有兩種類型。 [**相關的**](https://en.wikipedia.org/wiki/Correlated_subquery "Correlated_subquery")和**不相關的**查詢。 不相關查詢是內部查詢可以獨立于外部查詢運行的地方,而相關查詢是內部查詢與外部查詢一起運行的地方。 *我們的第 n 高薪是相關查詢*的示例。 最好先了解一下內部查詢每次都會執行,處理外部查詢中的一行。 內部查詢基本上不會做任何非常秘密的工作,它只會返回比當前處理行的薪水列高的不同薪水的計數。 任何時候,它都會發現外部查詢中當前行的薪水列的值等于內部查詢中較高薪水的計數,并返回結果。 ## 4.性能分析 正如我們從上面了解到的那樣,每次執行內部查詢都會處理一行外部查詢,這會帶來很多性能開銷,特別是在行數太大的情況下。 為了避免這種情況,應該使用特定于數據庫的關鍵字來更快地獲得結果。 例如在 SQL Server 中,可以這樣使用關鍵字`TOP`。 如何在 SQL Server 中找到第 n 高薪水。 ```java SELECT TOP 1 EMPLOYEE_SALARY FROM ( ?? ?SELECT DISTINCT TOP N EMPLOYEE_SALARY ?? ?FROM EMPLOYEE_TEST ?? ?ORDER BY EMPLOYEE_SALARY DESC ) A ORDER BY EMPLOYEE_SALARY WHERE N > 1 ``` 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看