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

Retornar cada enésima linha do banco de dados usando ActiveRecord em trilhos


Eu acho que você está procurando uma consulta como esta:
SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0

Isso é difícil de construir usando ActiveRecord, então você pode ser forçado a fazer algo como:
@widgetstats = self.widgetstats.find_by_sql(
  %{
    SELECT * FROM
    (
      SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id
    ) AS stats
    WHERE mod(rownum,3) = 0
  }
)

Obviamente, você desejará alterar a ordem usada e adicionar quaisquer cláusulas WHERE ou outras modificações para atender às suas necessidades.