sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgresql:¿Cómo selecciono las entradas principales del n por ciento (%) de cada grupo/categoría?

Para recuperar las filas según el porcentaje del número de filas en cada grupo, puede usar dos funciones de ventana:una para contar las filas y otra para darles un número único.

select gp,
       val
from (
  select gp, 
         val,
         count(*) over (partition by gp) as cnt,
         row_number() over (partition by gp order by val desc) as rn
  from temp
) t
where rn / cnt <= 0.75;

Ejemplo de SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1

Por cierto:usando char casi siempre es una mala idea porque es un tipo de datos de longitud fija que se completa con la longitud definida. Espero que solo hayas hecho eso para configurar el ejemplo y no lo uses en tu tabla real.