Heim >Datenbank >MySQL-Tutorial >Wie rufe ich die Top-N-Höchstwerte in Oracle SQL ab?
Extrahieren der Top-N-Höchstwerte in Oracle SQL
Herausforderung: Wie wählt man effizient eine bestimmte Anzahl von Zeilen aus, die die höchsten Werte aus einer bestimmten Spalte innerhalb einer Oracle SQL-Abfrage enthalten?
Lösung:
Der optimale Ansatz nutzt die Analysefunktionen von Oracle, insbesondere RANK()
oder DENSE_RANK()
:
Einsatz der RANK()
-Funktion:
<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 ruft die fünf höchsten Gehälter zusammen mit den entsprechenden Mitarbeiterzahlen ab.
Verwendung der DENSE_RANK()
-Funktion:
<code class="language-sql">select * from ( select empno, sal, dense_rank() over (order by sal desc) as rnk from emp ) where rnk <= 5;</code>
DENSE_RANK()
bietet einen Vorteil gegenüber RANK()
, indem Lücken in der Rangfolge beseitigt werden, wenn mehrere Zeilen denselben Wert haben.
Wichtige Überlegungen:
ROW_NUMBER()
-Analysefunktion erreicht werden kann, werden RANK()
oder DENSE_RANK()
im Allgemeinen für die Auswahl der Top-N-Werte bevorzugt, da sie Bindungen eleganter handhaben.ROWNUM
als eigenständige Lösung. Seine Anwendung vor der ORDER BY
-Klausel kann zu ungenauen Ergebnissen führen.Das obige ist der detaillierte Inhalt vonWie rufe ich die Top-N-Höchstwerte in Oracle SQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!