L'erreur de votre première tentative est que vous ne pouvez pas mélanger la fonction d'agrégation count(*)
avec le non agrégé sélection de lignes. Vous pouvez résoudre ce problème en utilisant count()
comme fonction d'agrégation de fenêtre à la place :
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;
Explication détaillée ici :
@Alexander a un correctif pour votre dernière tentative.