sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql :Jak mohu vybrat top n procent (%) položek z každé skupiny/kategorie

Chcete-li načíst řádky na základě procenta počtu řádků v každé skupině, můžete použít dvě funkce okna:jednu pro počítání řádků a druhou pro přidělení jedinečného čísla.

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;

Příklad SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1

Btw:pomocí char je téměř vždy špatný nápad, protože jde o datový typ s pevnou délkou, který je doplněn na definovanou délku. Doufám, že jste to udělali pouze pro nastavení příkladu a nepoužili jste jej ve své skutečné tabulce.



  1. K získání informací o serveru v SQL Server použijte SERVERPROPERTY().

  2. Jak zvýšit povolenou velikost přílohy při odesílání e-mailu na SQL Server (T-SQL)

  3. Závažná chyba:Volání nedefinované funkce session_register()

  4. zabezpečení vláken postgresql pro dočasné tabulky