Hola de nuevo Jhonatan:
Alguna vez uno de mis maestros me dijo que hay muchas maneras de matar una mosca, pero utilizar una pistola puede ser demaciado. Creo que esto aplica en lo que estás tratando de hacer, la solución puede atacarse de manera más simple...
No nos mencionas con qué BD's estás trabajando, pero creo que este ejemplo te puede servir. De entrada te comento que es muy probable que tengas que hacer un SP o procedimiento almacenado para lograr lo que quieres... igual y puedes hacerlo con una consulta SQL, pero no será nada simple. No nos dices con qué BD's estás trabajando, pero voy a poner un ejemplo en MySQL que te puede servir:
En matemáticas existe una operación para obtener la parte entera de una división, es decir, algo como esto:
Por lo tanto, puedes utilizar esta técnica para obtener lo que quieres. Supongamos que tienes estos datos en tu tabla:
Tal como dices, para obtener el tamaño del cuantil calculas el total de registros y lo divides entre 5 (en este caso sería 3):
El siguiente paso es numerar los registros para asignarles un consecutivo, de tal suerte que tengas algo como esto:
En tu caso, puedo suponer por la sintaxis que manejas que estás trabajando con SQL Server o con ORACLE, ahí hay funciones para generar consecutivos con las mismas funciones rank o row_number.
Una vez teniendo esto, entonces simplemente aplicas una DIVISION ENTERA del consecutivo entre el numero que resultó del quintil,
en otras palabras harías algo como esto:
Que desde mi punto de vista es lo que necesitas. Checa el ejemplo y trata de aplicarlo en el motor de BD's que estés utilizando, si continuas con problemas lo comentas y revisamos tu código.
Saludos
Leo.