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

Elegantní PostgreSQL Group od pro Ruby on Rails / ActiveRecord

Funkce PostgreSQL, kterou zde chcete použít, je DISTINCT ON . Existují dva základní způsoby, jak provést tento dotaz prostřednictvím ActiveRecord.

První metodou je pouze zadat :select a :order možnosti. Funguje to skvěle, když máte poměrně jednoduchý dotaz bez :joins nebo :include .

Post.all(
  :select => 'DISTINCT ON (date::date) *',
  :order => 'date::date DESC, created_at DESC'
)

Pokud máte složitější dotaz, kde ActiveRecord generuje svůj vlastní SELECT klauzule, můžete k výběru cílových záznamů použít poddotaz.

Post.all(
  :joins => 'INNER JOIN (SELECT DISTINCT ON (date::date) id FROM posts ORDER BY date::date DESC, created_at DESC) x ON x.id = posts.id'
)

Všimněte si, že to může být o něco pomalejší než první metoda v závislosti na vašich datech. Tuto metodu bych použil pouze v případě potřeby. Ujistěte se, že srovnáváte s daty podobnými produkci.



  1. Oracle Database Testing Challenge – Porovnejte data schématu

  2. Podmínka IF MySQL

  3. Jak mohu exportovat obsah tabulky oracle do souboru?

  4. Indexy tabulky pro sloupce pole Text[]