[pgsql-jp: 30615] order by でソートした順に番号を付けたい

SATOH Kiyoshi satoh0 @ hakuba.jp
2003年 7月 28日 (月) 12:50:25 JST


佐藤です。

 A という項目で order by でソートして limit で上位だけ取り出し、それを 
B という他の項目でまたソートし直して、Aでソートした順位も含めて表示たい
と考えています。

例:

AとB、2カラムのテーブル。
 A | B
---+--
30 | a
20 | b
40 | c
10 | d

カラムAで order by でソートし limit 3 で切り、その順位も出す。
順位 |  A | B
-----+----+--
   1 | 10 | d
   2 | 20 | b
   3 | 30 | a

上記の結果をさらに、カラムBでソート。
順位 |  A | B
-----+----+--
   3 | 30 | a
   2 | 20 | b
   1 | 10 | d

この結果を表示したいというものです。

 その時に、最初の A でソートした順位を表示したいため、とりだしたものに 
1,2,3.. というように順番をつけて、それをまた B で order by でソートし直
す、という方法で考えたのですが、上から順に 1,2,3.. と付ける方法が浮かび
ませんでした。
 この方法でなくても良いのですが、どのようなSQLが考えられますでしょうか。
 PHPでコーディングしているため、一度PHP側で読み込んでからソートするもの
を書いたのですが、SQLだけで可能ではないかと思った次第です。


-- 
佐藤 潔 (SATOH Kiyoshi) <satoh @ hakuba.jp> <csml @ tcp-ip.or.jp>




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