SQL zweitkleinsten Wert

N0m4n904

Newbie
Registriert
Jan. 2019
Beiträge
4
Hallo, Ich soll den zweitkleinsten Wert von einer Spalte im MS SQL SERVER zurückgeben. Wie kann ich meine folgende Abfrage umbauen um das zu schaffen?
SQL:
SELECT Tabelle_Mitarbeiter.Vorname, Tabelle_Mitarbeiter.Nachname
FROM Tabelle_Mitarbeiter
INNER JOIN Tabelle_Abteilung ON Tabelle_Mitarbeiter.Abteilung_ID = Tabelle_Abteilung.ID
WHERE  Tabelle_Abteilung.Budget > (SELECT MIN(Tabelle_Abteilung.Budget) FROM Tabelle_Abteilung)
ORDER BY Tabelle_Abteilung.Budget DESC

Danke schon mal im Voraus!
 
Wie @ZFS richtig angemerkt hat, die Rownumber mit selektieren und dann den zweiten Datensatz bei aufsteigender Sortierung verwenden.

Alternativ kannst du das auch mit einer derived Table lösen: In der inneren Query aufsteigend die Top2 selektieren und in der äußeren dann Top1 absteigend sortiert.

greetz
hroessler
 
Tauchen denn gleiche Budgets auf? Wenn ja, erwischt man unter Umständen zwar den vorletzten Datensatz, aber dieser hat dasselbe Budget wie der letzte und ist somit nicht der zweitkleinste Wert.
 
Raijin schrieb:
Tauchen denn gleiche Budgets auf? Wenn ja, erwischt man unter Umständen zwar den vorletzten Datensatz, aber dieser hat dasselbe Budget wie der letzte und ist somit nicht der zweitkleinste Wert.

Dann könnte man statt row_number dense_rank verwenden. Könnte dann aber natürlich zu mehreren Ergebnissen führen.
 
Du hast mit deiner WHERE Bedingung das kleinste Budget schon ausgeschlossen. Du kannst also ein TOP(1) machen und dann einfach ORDER BY Budget ASC. Das sollte dann den gewünschten Wert bringen.
 
  • Gefällt mir
Reaktionen: Raijin
LoL, das stimmt allerdings ;)
 
Den Datensatz wählen, der grösser als der kleinste ist:

SQL:
SELECT MIN(budget)
FROM tabelle_abteilung
WHERE budget > ( SELECT MIN( budget )
                FROM tabelle_abteilung)
 
Geisterwolf schrieb:
Du hast mit deiner WHERE Bedingung das kleinste Budget schon ausgeschlossen. Du kannst also ein TOP(1) machen und dann einfach ORDER BY Budget ASC. Das sollte dann den gewünschten Wert bringen.

Danke dir !
 
Zurück
Oben