Oracle SQL: So rufen Sie die fünf höchsten Werte in einer Spalte ab
Bei Datenbankabfragen ist es häufig erforderlich, die Ergebnisse auf Zeilen mit bestimmten Merkmalen zu beschränken, beispielsweise den höchsten oder niedrigsten Wert in einer bestimmten Spalte. In Oracle SQL können Sie zu diesem Zweck Analysefunktionen wie RANK(), DENSE_RANK() oder ROW_NUMBER() verwenden.
RANK() und DENSE_RANK() für höchste Werte
Analysefunktionen wie RANK() und DENSE_RANK() weisen jeder Zeile basierend auf einer angegebenen Rangfolge einen Rang zu. Um die fünf höchsten Werte in einer Spalte abzurufen, können Sie das folgende Abfrageformat verwenden:
SELECT *
FROM (
SELECT , RANK() OVER (ORDER BY DESC) AS rnk
FROM
)
WHERE rnk
RANK() weist jeder Zeile einen numerischen Rang zu, beginnend mit 1, dem höchsten Wert. DENSE_RANK() komprimiert Lücken, wenn identische Werte vorhanden sind, und weist dabei Ränge zu.
ROW_NUMBER() für eine bestimmte Anzahl von Zeilen
Die AnalysefunktionROW_NUMBER() weist jeder Zeile eine Seriennummer zu. Damit können Sie unabhängig von ihrem Wert eine bestimmte Anzahl von Zeilen abrufen. Zum Beispiel:
SELECT *
FROM (
SELECT , ROW_NUMBER() OVER (ORDER BY DESC) AS rnk
FROM
)
WHERE rnk
Nicht-analytische Lösung: ROWNUM verwenden
Obwohl weniger üblich, können Sie auch die Pseudospalte ROWNUM verwenden, um die Ergebnisse auf eine bestimmte Anzahl von Zeilen zu beschränken. Allerdings sollte die Verwendung mit Vorsicht erfolgen, da ROWNUM vor der ORDER BY-Klausel ausgewertet wird, was zu unvorhersehbaren Ergebnissen führen kann.
Beispiel: Holen Sie sich den bestbezahlten Mitarbeiter
Um die Verwendung von RANK() und DENSE_RANK() beim Abrufen der fünf bestbezahlten Mitarbeiter zu veranschaulichen:
SELECT *
FROM (
SELECT empno, sal, RANK() OVER (ORDER BY sal DESC) AS rnk
FROM emp
)
WHERE rnk
Diese Abfrage weist jedem Mitarbeiter einen numerischen Rang basierend auf seinem Gehalt zu, wobei 1 für den bestbezahlten Mitarbeiter steht. Anschließend werden die fünf besten Mitarbeiter in der Reihenfolge ihres absteigenden Gehalts angezeigt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3