sql >> データベース >  >> RDS >> PostgreSQL

Railsを使用したPostgresウィンドウ関数列

    これを試してください:

    Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")
    

    こちら 。ただし、これはデータベースに依存しない可能性があり、オブジェクトを渡すと面倒になる傾向があります。

    別の(高価な)解決策は、テーブルにランク列を追加し、レコードが保存または破棄されるたびに、コールバックで.orderを使用してすべてのレコードのランクを再計算することです。

    編集:

    単一レコードのクエリに適した別のアイデアは、 こちらでご覧いただけます。




    1. mysqlは更新から結果を返します

    2. Oracle 11g-低速の並列挿入選択を最適化する方法は?

    3. MySQLとPHPで部分的なjsonデータを読み取る

    4. plsqlのプロシージャ本体内にカーソルを作成する方法