[pgsql-jp: 37421] 一部のデータを SELECT した際に全体の順位取得

whi te white_wwjd @ yahoo.co.jp
2006年 8月 17日 (木) 14:43:34 JST


はじめまして。
藤田と申します。
現在、行き詰っており、皆さんの知恵をお借りできれば
と思い投稿させて頂きました。

Postgres8.1を使用しております。

あるテーブルから一部のデータを取得する際に、そのデータは
テーブル全体の中で何位であるかを取得する事は出来ないでし
ょうか。


あるランキングの様なものを作成しているのですが、OFFSET 
を使用して1ページに5個のデータを表示させようと思っていま
す。
表示部分はSmartyを使用しているのですが、foreach文等を使
用すると例えば2ページ目に移った際に、実際は6〜10位ですが1
〜5位と表示されてしまいます。
その為、SQL文で順位も取得出来ないかと思っております。


上手く説明が出来ないので以下に簡単なサンプルを記載します
。


TABLE名:ランキング

name|points
-----------
aa  |60
bb  |80
cc  |70
dd  |40
ee  |20


SELECT * FROM ランキング OFFSET 2 LIMIT 2 ORDER BY points
DESC;

name|points
aa  |60
dd  |40

が取得されると思いますが、「aa」が全体の何位かを取得する
事は出来ないでしょうか。
以下の様に取得するのが理想です。

name|points|rank
aa  |60    |3
dd  |40    |4




pgsql-jp メーリングリストの案内