Felet i ditt första försök är att du inte kan blanda aggregatfunktionen count(*)
med den osammanställda urval av rader. Du kan fixa detta genom att använda count()
som fönsteraggregatfunktion istället:
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;
Detaljerad förklaring här:
@Alexander har en fix för ditt senaste försök.