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

Postgresql:Seskupování s omezením velikosti skupiny pomocí funkcí okna

To lze provést pomocí dvou vnořených funkcí okna

SELECT
  id
FROM (
  SELECT
    id,
    color,
    score,
    ((rank() OVER color_window) - 1) / 2 AS rank_window_id
  FROM grouping_test
  WINDOW color_window AS (PARTITION BY color ORDER BY score DESC)
) as foo
WINDOW rank_window AS (PARTITION BY (color, rank_window_id))
ORDER BY
  (max(score) OVER rank_window) DESC,
  color;

Pomocí 2 je parametr velikosti skupiny.



  1. RSS generátor s funkcí ukládání do mezipaměti

  2. Oracle:Vybrat odlišné nefunguje, když je kurzor uvnitř kurzoru (pomocí kurzorového výrazu)

  3. SQL Server 2016:Vylepšení OLTP v paměti

  4. Funkce PDO vs pg_*