Fejlen i dit første forsøg er, at du ikke kan blande den samlede funktion count(*)
med den ikke-aggregerede udvalg af rækker. Du kan rette dette ved at bruge count()
som vinduesaggregatfunktion i stedet:
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;
Detaljeret forklaring her:
@Alexander har en rettelse til dit sidste forsøg.