Грешката при първия ви опит е, че не можете да смесите агрегатната функция count(*)
с необобщено избор на редове. Можете да коригирате това, като използвате count()
вместо това като агрегатна функция за прозорец:
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;
Подробно обяснение тук:
@Alexander има поправка за последния ви опит.