Ich möchte eine einfache Abfrage auf eine Liste von Elementen, die durch eine Nummer indiziert sind, und gruppieren sie in "Eimer" von gleicher Größe. So ist die Basisabfrage ist:SQL-Ergebnisse in Bereiche trennen
select my_members.member_index from my_members where my_members.active=1;
Sagen ich 1000 Mitglied Indexzahlen zurück, jetzt will ich sie in 10 gleich große Gruppen von max und min Mitglied Index aufzuspalten. Etwas wie:
Aktive Mitglieder in 0 bis 400: 100 Aktive Mitglieder in 401 bis 577: 100 ... Aktive Mitglieder in 1584 bis 1765: 100
Das Beste, was ich tun konnte wiederholt Abfragen für den max (my_members.member_index) mit einer zunehmenden rownum Grenze:
for r in 1 .. 10 loop
select max(my_members.member_index)
into ranges(r)
from my_members
where my_members.active = 1
and rownum < top_row
order by my_members.member_index asc;
top_row := top_row + 100;
end loop;
Gut gemacht. Du hast die 'NTILE' Funktion neu erfunden :) –