Top n por ciento top n%

Tengo el siguiente código.

    SQL> select * from student_gpa;

    SSN                    GPA
    --------------- ----------
   22222                    3
   11111                    4
   55555                    3
   33333                    4
   44444                    3

Tengo esta función para obtener las dos primeras filas de puntuación gpa.

SQL> select * from (seleccione ssn, gpa from student_gpa order by gpa desc) donde rownum <= 2;

     SSN                    GPA
    --------------- ----------
    11111                    4
    33333                    4

Mi pregunta es qué función utilizo para obtener el máximo n% de la puntuación de GPA. Por ejemplo, dado que tengo dos individuos con un GPA de 4, el rango denso devolvería 11111 ocupando la fila 1 y 22222 ocupando la fila 2. Realmente estaba buscando una función que diga que calcula el 5% de la puntuación del GPA y el valor devuelto sería tanto 11111 como 22222. La función del 5% NO DEBERÍA devolver solo 11111. Incluso si tuviera más entradas que tuvieran un gpa de 4, la función del 5% todavía devolvería todas las filas que tenían un gpa de 4. Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta