„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erhalte ich die 5 höchsten Werte aus einer Oracle SQL-Spalte?

Wie erhalte ich die 5 höchsten Werte aus einer Oracle SQL-Spalte?

Veröffentlicht am 24.01.2025
Durchsuche:283

How to Get the Top 5 Highest Values from an Oracle SQL Column?

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 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:

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.

Neuestes Tutorial Mehr>

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