[pgsql-jp: 38947] Re: グループごとの最大値を持つデータを取得したい

野村 admin @ true.jp
2007年 11月 12日 (月) 13:10:53 JST


日にちがたってるから遅いですかね
こんなのはどうでしょう。
select
 distinct on (category )
 *
 from test
 order by category,cnt desc

なかで さんは書きました:
> こんにちは、中出と申します。
> 
> しばらくSQLで悩んでいるのですが、良い方法が
> 思いつかなかったので投稿させていただきます。
> 
> 
> 以下のようなテーブルがあり、データがあるとします。
> categoryごとにcntが最大のデータを1回のSQL発行で
> 取得できないかと思っています。
> よい方法があれば教えてください。
> 
> なお、category分のSQLを発行してcntが最大のデータ
> を取得するというのもありますが、categoryが増える
> 可能性がありますので、できれば避けたいと考えてい
> ます。
> 
> 以上、よろしくお願いします。
> 
> ●テーブル
> CREATE TABLE "test"
> (
>   category int4 NOT NULL,
>   name varchar(10) NOT NULL,
>   cnt int4 DEFAULT 0
> ) 
> 
> ●データ
> category | name | cnt
> ---------+------+-----
> 1        | hoge | 1
> 1        | fugo | 2
> 2        | fufu | 1
> 2        | hoho | 3
> 
> ●取り出したいデータ
> category | name | cnt
> ---------+------+-----
> 1        | fugo | 2
> 2        | hoho | 3
> 




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