Oracle SQL: So rufen Sie die fünf höchsten Werte in einer Spalte ab
Bei Datenbankabfragen ist es oft notwendig, die Ergebnisse auf Zeilen mit bestimmten Merkmalen zu beschränken, wie zum Beispiel 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:
<code class="language-sql">SELECT * FROM ( SELECT <column_name>, RANK() OVER (ORDER BY <column_name> DESC) AS rnk FROM <table_name> ) WHERE rnk <= 5;</code>
RANK() weist jeder Zeile einen numerischen Rang zu, beginnend mit dem höchsten Wert von 1. 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 Analysefunktion ROW_NUMBER() weist jeder Zeile eine Seriennummer zu. Damit können Sie unabhängig von ihrem Wert eine bestimmte Anzahl von Zeilen abrufen. Zum Beispiel:
<code class="language-sql">SELECT * FROM ( SELECT <column_name>, ROW_NUMBER() OVER (ORDER BY <column_name> DESC) AS rnk FROM <table_name> ) WHERE rnk <= 5;</code>
Nicht-analytische Lösung: ROWNUM verwenden
Obwohl weniger üblich, können Sie auch die ROWNUM-Pseudospalte 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 5 bestbezahlten Mitarbeiter zu veranschaulichen:
<code class="language-sql">SELECT * FROM ( SELECT empno, sal, RANK() OVER (ORDER BY sal DESC) AS rnk FROM emp ) WHERE rnk <= 5;</code>
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.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die 5 höchsten Werte aus einer Oracle SQL-Spalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!