ntile ist eine der vielen netten (meiner Erinnerung nach in 8i eingeführten) analytischen Funktionen, die das Reporting dramatisch vereinfachen. Die Funktion unterteilt eine Ergebnismenge in n buckets und vergibt die entsprechende bucket number an alle zugehörigen rows.
select OBJECT_NAME, OBJECT_ID, ntile(5) over (order by OBJECT_ID) range from dba_objects where rownum < 20 order by OBJECT_ID OBJECT_NAME OBJECT_ID RANGE -------------------- ---------- ---------- I_OBJ# 3 1 I_TS# 7 1 I_FILE#_BLOCK# 9 1 UET$ 13 1 UNDO$ 15 2 FILE$ 17 2 IND$ 19 2 ICOL$ 20 2 PROXY_ROLE_DATA$ 25 3 I_PROXY_ROLE_DATA$_1 26 3 CON$ 28 3 C_COBJ# 29 3 I_OBJ3 38 4 I_IND1 39 4 I_FILE1 41 4 I_USER1 44 4 I_CON1 48 5 I_CDEF2 51 5 I_CDEF4 53 5 19 rows selected.