O erro na sua primeira tentativa é que você não pode misturar a função agregada
count(*)
com o não agregado seleção de linhas. Você pode corrigir isso usando count()
como função de agregação de janela em vez disso: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;
Explicação detalhada aqui:
@Alexander tem uma correção para sua última tentativa.