7 Stimmen

Wie findet man das fünfthöchste Gehalt in einer einzigen Abfrage in SQL Server

Wie findet man das fünfthöchste Gehalt in einer einzigen Abfrage in SQL Server

23voto

Jayden Punkte 2617

Erstellen Sie in SQL Server 2005 und 2008 eine Abfrage mit Rangunterauswahl und fügen Sie dann eine Where-Klausel hinzu, wobei der Rang = 5 ist.

select
  *
from
(
  Select
    SalesOrderID, CustomerID, Row_Number() Over (Order By SalesOrderID) as RunningCount
  From
    Sales.SalesOrderHeader
  Where
    SalesOrderID > 10000
  Order By
    SalesOrderID 
) ranked
where 
  RunningCount = 5

4voto

recursive Punkte 80517

Diese funktionieren in SQL Server 2000

DECLARE @result int

SELECT TOP 5 @result = Salary FROM Employees ORDER BY Salary DESC

Die Syntax sollte ähnlich sein. Ich kann es im Moment nicht testen.

Oder Sie könnten eine Unterabfrage verwenden:

SELECT MIN(Salary) FROM (
    SELECT TOP 5 Salary FROM Employees ORDER BY Salary DESC
) AS TopFive

Auch hier bin ich mir nicht sicher, ob die Syntax genau richtig ist, aber der Ansatz funktioniert.

1voto

SELECT TOP 1 salary
FROM (
    SELECT DISTINCT TOP n salary
    FROM employee
    ORDER BY salary DESC) a
ORDER BY salary
where n > 1 -- (n is always greater than one)

Mit dieser Abfrage können Sie eine beliebige Anzahl der höchsten Gehälter finden.

1voto

Ritesh Kumar Punkte 11

Um das fünfthöchste Gehalt in einer Datenbank zu finden, lautet die Abfrage:.

select MIN(esal) from (
    select top 5 esal from tbemp order by esal desc) as sal

es funktioniert, probieren Sie es aus

1voto

user683393 Punkte 11
SELECT MIN(Salary) FROM (
    SELECT TOP 2 Salary FROM empa ORDER BY Salary DESC
) AS TopFive

Sie funktioniert einwandfrei, bitte verwenden Sie sie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X