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

Toshikazu Yoshikawa toshi @ uncut00.com
2003年 7月 28日 (月) 14:38:03 JST


吉川です。
こちらのMLは久しぶりです。

>  その時に、最初の A でソートした順位を表示したいため、とりだしたものに 
> 1,2,3.. というように順番をつけて、それをまた B で order by でソートし直
> す、という方法で考えたのですが、上から順に 1,2,3.. と付ける方法が浮かび
> ませんでした。
>  この方法でなくても良いのですが、どのようなSQLが考えられますでしょうか。

お使いのPostgreSQLのバージョンが定かではないので、
動くかどうかは分かりませんが、
手元の7.3.2では、以下のSQLでできました。

select * from data;
 a  | b
----+---
 30 | a
 20 | b
 40 | c
 10 | d
(4 rows)

select * from (select (select count(*)+1 from data as data1 
where data1.a < data2.a) as 順位, a, b 
from data as data2 order by a limit 3) as temp order by b;
 順位 | a  | b
------+----+---
    3 | 30 | a
    2 | 20 | b
    1 | 10 | d
(3 rows)

-- 
Toshikazu Yoshikawa <toshi @ uncut00.com>




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