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.