PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgresql:Como seleciono as principais entradas n percent (%) de cada grupo/categoria


Para recuperar as linhas com base na porcentagem do número de linhas em cada grupo, você pode usar duas funções de janela:uma para contar as linhas e outra para fornecer um 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;

Exemplo do SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1

Btw:usando char é quase sempre uma má ideia porque é um tipo de dados de comprimento fixo que é preenchido com o comprimento definido. Espero que você tenha feito isso apenas para configurar o exemplo e não o use em sua tabela real.