sql >> Base de Datos >  >> RDS >> PostgreSQL

Devuelve cada enésima fila de la base de datos usando ActiveRecord en Rails

Creo que estás buscando una consulta como esta:

SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0

Esto es difícil de compilar con ActiveRecord, por lo que es posible que se vea obligado a hacer 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 querrá cambiar el orden utilizado y agregar cláusulas WHERE u otras modificaciones para satisfacer sus necesidades.