De fout bij uw eerste poging is dat u de aggregatiefunctie count(*)
. niet kunt combineren met de niet-geaggregeerde selectie van rijen. U kunt dit oplossen door count()
. te gebruiken als venster-aggregaatfunctie in plaats daarvan:
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;
Gedetailleerde uitleg hier:
@Alexander heeft een oplossing voor je laatste poging.