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

SELECCIONE un número fijo de filas omitiendo filas uniformemente

El error en su primer intento es que no puede mezclar la función agregada count(*) con el no agregado selección de filas. Puedes arreglar esto usando count() como función de agregado de ventana en su lugar:

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;

Explicación detallada aquí:

@Alexander tiene una solución para su último intento.