PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

WÄHLEN Sie eine feste Anzahl von Zeilen, indem Sie Zeilen gleichmäßig überspringen

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.