Heim > Datenbank > MySQL-Tutorial > 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?

Patricia Arquette
Freigeben: 2025-01-09 13:42:42
Original
310 Leute haben es durchsucht

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 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage