PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

SELEZIONA il numero fisso di righe saltando le righe in modo uniforme

L'errore nel tuo primo tentativo è che non puoi combinare la funzione aggregata count(*) con il non aggregato selezione di righe. Puoi risolvere questo problema usando count() come funzione window-aggregate invece:

SELECT * FROM (
   SELECT *, ((row_number() OVER (ORDER BY "time"))
               % ceil(count(*) OVER () / 500.0)::int) AS rn
   FROM   data_raw
   ) sub
WHERE sub.rn = 0;

Spiegazione dettagliata qui:

@Alexander ha una soluzione per il tuo ultimo tentativo.