[pgsql-jp: 36889] Re: 項目毎に件数指定をしたい

odagiri atsushi aodagx @ gmail.com
2006年 3月 17日 (金) 23:14:28 JST


小田切です。
こんな感じですかね。

select *
from ex1 e
where seq in (select seq from ex1 f where f.id = e.id order by f1 limit 2)
order by e.id , e.f1 desc

相関クエリなので、パフォーマンスは保障できませんが。


06/03/17 に 西村 篤史<a2c @ lets-heart.co.jp> さんは書きました:
> 西村@和歌山市です。
> いつも勉強させていただいます。
>
> Select文にて、offset,limit を使った件数指定ですが、
> 指定のカラムにある値ごとに上位2位の表示をしたいと思っております。
>
> 例えばテーブル内のカラムが「 ID ,f1 ,f2 ,f3 ,f4」となっており、
> レコードは下記の通り入っているとします。
>
> 001,400 ,200 ,300 ,400
> 001,500 ,200 ,300 ,400
> 001,600 ,200 ,300 ,400
> 002,100 ,200 ,300 ,400
> 002,200 ,200 ,300 ,400
> 002,300 ,200 ,300 ,400
>
> 表示したい形は、こんな感じです。
> 001,600 ,200 ,300 ,400
> 001,500 ,200 ,300 ,400
> 002,300 ,200 ,300 ,400
> 002,200 ,200 ,300 ,400
>
> つまり、左端のカラム「ID」ごとにカラム「f1」の値が大きい順に
> 上位2位までを表示したいのですが、Select文ではどう書けば良いので
> しょうか?
> 普通にOffset,limit を使うと表示する全体の件数から上位何位までと
> なりますが、「ID」毎にselect文を実行する事になるのでしょうか。
>
> すみませんが、ご教授の程、宜しくお願いいたします。
>


--
/*
Atsushi Odagiri
mailto:aodagx @ gmail.com
*/



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