=====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 => [[prog:oracle_analytic_functions_top_n|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 ==== * DOAG 2014 - Konfernzvortrag