テーブル内のデータのサブセットをランク付けしようとしていますが、私は何か間違っていると思います。私はpostgresのrank()機能に関する多くの情報を見つけることができません。おそらく、間違った場所を探しています。いずれにしても:postgresクエリのランク付け方法
私は、日付に基づいてテーブルのクラスタ内にあるIDのランクを知りたいと思います。次のように私のクエリは次のとおりです。
select cluster_id,feed_id,pub_date,rank
from (select feed_id,pub_date,cluster_id,rank()
over (order by pub_date asc) from url_info)
as bar where cluster_id = 9876 and feed_id = 1234;
私は、次のstackoverflowの記事の後にこれをモデル化している:私は何か間違ったことをやっていると思いますpostgres rank
理由がにあるurl_infoで唯一の39行があるということですcluster_id 9876であり、このクエリは10分間実行され、戻ってこなかった。 (実際にはかなり長い間それを再実行しましたが、結果は返されませんでしたが、クラスタ9876にはID 1234の行があります) "ID 1234は指定した基準で5番目でした。正しい、私のクエリの制約に応じた相対的なランクを返します?
これはところではpostgres 8.4である。
ランクは何に比例しますか?すべてのレコード(これは上のクエリが尋ねるもので、おそらくそれが長すぎる理由です)?述語によって選択されたレコードの集合?いくつかの他のグループ化? 'over'句は、すべての行をランク付けしたくない場合には' partition by'を指定する必要があります。 [ウィンドウ関数のチュートリアルはこちら](http://www.postgresql.org/docs/8.4/static/tutorial-window.html) – dbenhur
pub_dateに相対的なランクを付けたいと思います。たぶん私はもう少し説明できます:url_infoには何千ものURLがあります。それらのうち39個はクラスタ9876を包括しています。9876のメンバーであるURLだけを選択すると、pub_dateに基づいてURL(クラスタ9876を構成する)を順位付けします。このためにウィンドウ関数に基づいてパーティションを使用していますか?私はあなたが送ったURLを見ました。これは、私がここでやっていない、いくつかの値を計算した後に項目をランク付けすることを参照しているようです。 – WildBill