PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

SELECT número fixo de linhas pulando linhas uniformemente


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.