sql >> Databáze >  >> RDS >> PostgreSQL

Vraťte každý n-tý řádek z databáze pomocí ActiveRecord v kolejích

Myslím, že hledáte dotaz jako je tento:

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

To je obtížné vytvořit pomocí ActiveRecord, takže můžete být nuceni udělat něco jako:

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

Zjevně budete chtít změnit použité řazení a přidat jakékoli klauzule WHERE nebo jiné úpravy, aby vyhovovaly vašim potřebám.



  1. Vyberte počet (*) z více tabulek

  2. Knee-Jerk Performance Tuning:Stačí přidat SSD

  3. skupina podle rozsahu v mysql

  4. Čtení a import souboru XLSX (Excel) v Oracle