PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Restituisce ogni ennesima riga dal database utilizzando ActiveRecord in rails

Penso che tu stia cercando una query come questa:

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

Questo è difficile da creare usando ActiveRecord, quindi potresti essere costretto a fare qualcosa come:

@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
  }
)

Ovviamente vorrai modificare l'ordinamento utilizzato e aggiungere eventuali clausole WHERE o altre modifiche in base alle tue esigenze.