[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 メーリングリストの案内