Der Fehler bei Ihrem ersten Versuch ist, dass Sie die Aggregatfunktion count(*)
nicht mischen können mit dem nicht aggregierten Auswahl von Reihen. Sie können dies beheben, indem Sie count()
verwenden stattdessen als Fensteraggregatfunktion:
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;
Ausführliche Erklärung hier:
@Alexander hat eine Lösung für Ihren letzten Versuch.