特定の方法で頻繁に注文するテーブルがあります。その順序付けは、ランクと呼ばれる派生列の基礎です。テーブル全体にクエリを実行すると、データベースにそのランクを計算させることができます。
CREATE TEMP SEQUENCE the_seq;
SELECT my_table.foo, my_table.bar, nextval('the_seq') AS rank
FROM my_table
ORDER BY my_table.bar DESC;
これにより、次のような有用な結果が得られます。
foo | bar | rank
-------------------
0005 | 2100 | 1
0003 | 1632 | 2
0002 | 1200 | 3
0001 | 899 | 4
0004 | 500 | 5
その結果セットを使用して、任意の foo のランクを決定できます。ただし、これには、foo '0001' のランクが必要な場合でも、テーブル全体にクエリを実行し、結果セットを反復処理する必要があります。
理想的には、ランク列を実行するビューがあればいいので、任意に次のように言えます。
SELECT my_table_vw.foo, my_table_vw.bar, my_table_vw.rank
FROM my_table_vw
WHERE my_table_vw.foo = '0001'
そしてただ得る
foo | bar | rank
-------------------
0001 | 899 | 4
ただし、ビューはその定義で一時シーケンスを構築できないため、データベースでそれを構築する方法がわかりません。私がやろうとしていることは可能ですか?代替手段、挿入時のランクの維持、またはテーブル全体のクエリがばかげているように見えるため、そうしなければならないと感じています。