Błąd w pierwszej próbie polega na tym, że nie możesz mieszać funkcji agregującej count(*)
z niezagregowanym wybór rzędów. Możesz to naprawić, używając count()
zamiast tego jako funkcja agregująca okna:
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;
Szczegółowe wyjaśnienie tutaj:
@Alexander ma poprawkę na ostatnią próbę.