Oracle 12c Datenbank - native Top-N Abfragen

Eine native Top-N Abfrage ist nun auch in 12c Oracle möglich!

Zuvor mit 11g und Analytic Function ⇒ Oracle Analytic Function - Beispiel 2 - Top N Query

Selektiere die Top 5:

FETCH FIRST 5 ROWS ONLY

SELECT object_id 
     , object_name
  FROM dba_objects 
 ORDER BY object_id DESC
 FETCH NEXT 5 ROWS ONLY
/
 
 OBJECT_ID OBJECT_NAME
------------ ------------------------------
      129319 WRP$_REPORTS_DETAILS_IDX02
      129318 WRP$_REPORTS_DETAILS_IDX01
      129317 SYS_IL0000006450C00009$$
      129316 SYS_LOB0000006450C00009$$
      129315 WRP$_REPORTS_DETAILS

Hole nach einem Offset von 5 die Top 5 (Blättern):

OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

SELECT object_id 
     , object_name
  FROM dba_objects 
 ORDER BY object_id DESC
 OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
/
 
  OBJECT_ID OBJECT_NAME
------------ ------------------------------
      129314 WRP$_REPORTS_IDX02
      129313 WRP$_REPORTS_IDX01
      129312 WRP$_REPORTS
      129271 MGMT_AUDIT_LOGS_IDX05
      129270 MGMT_AUDIT_LOGS_IDX04

Selektiere die Top 5 + alle mit gleichen Werten:

FETCH FIRST 5 ROWS WITH TIES

 

Selektiere die Top 5 Prozent aus der Tabelle:

FETCH FIRST 5 PERCENT ROWS ONLY

  SELECT OWNER
        ,SEGMENT_NAME
        ,BYTES 
    FROM dba_segments
  FETCH FIRST 1 PERCENT ROWS ONLY
  /

Intern sehen die Ausführungspläne nach eine Umsetzung über Analytical Funktionen aus.

Quellen