[pgsql-jp: 31472] Re: グループ化して最小一覧を取得

Tomoyuki Morinaga Tomoyuki_Morinaga @ justsystem.co.jp
2003年 11月 14日 (金) 18:14:47 JST


森永@ジャストシステムと申します

まず果物ごとの最低価格の一覧を求めた後、
その一覧と yahoya をつきあわせる、
という二段構えにするのはどうでしょうか。

select kuda, santi, kakaku from yahoya,
  (select kuda as kuda2, min(kakaku) as minkakaku from yahoya group by kuda)
as yahoya2
where kuda=yahoya2.kuda and kakaku=yahoya2.minkakaku;


> 渡辺(雄)@NTT-ITです
>
> 以下のようなテーブルがあります。
> 「果物の種類」「その産地」「価格」「その他」の列があります。
> 果物の種類ごとに、一番安い価格とその産地を取り出すために以下のSQLを
> 書いたのですが、実際のテーブルは6840行で
> 結果を得るまでに20分ほどかかってしまっています。
> もっと早く結果を得るにはどのようにしたらよいでしょうか?
>
> バージョンは PostgreSQL 7.3 on i686-pc-linux-gnu, compiled by GCC 2.96 で
す
>
>  kuda  | santi | dummy1 | kakaku
> -------+-------+--------+--------
>  ringo | tokyo | a      |    100
>  ringo | chiba | b      |    100
>  ringo | saita | c      |     90
>  ringo | kanag | a      |     80
>  ringo | gunma | b      |     70
>  ringo | ibara | c      |     70
>  mikan | tokyo | a      |    200
>  mikan | chiba | b      |    200
>  mikan | saita | c      |    190
>  mikan | kanag | a      |    180
>  mikan | gunma | b      |    170
>  mikan | ibara | c      |    170
>  nashi | tokyo | a      |    110
>  nashi | chiba | b      |    110
>  nashi | saita | c      |    100
>  nashi | kanag | a      |     90
>  nashi | gunma | b      |     80
>  nashi | ibara | c      |     80
>  meron | tokyo | a      |     60
>  meron | chiba | b      |     60
>  meron | saita | c      |     55
>  meron | kanag | a      |     50
>  meron | gunma | b      |     45
>  meron | ibara | c      |     45
>
> 上のテーブルでは
>  ringo | tokyo | a      |    100
>  ringo | tokyo | a      |     90
> の様に、果物と産地が重複することはありません。
>
> 考えたSQL文
>
> select kuda, santi, kakaku
> from yahoya
> where kakaku=(select min(kakaku) from yahoya b where b.kuda=yahoya.kuda);
>
> 得たい結果
>
>  kuda  | santi | kakaku
> -------+-------+--------
>  ringo | gunma |     70
>  ringo | ibara |     70
>  mikan | gunma |    170
>  mikan | ibara |    170
>  nashi | gunma |     80
>  nashi | ibara |     80
>  meron | gunma |     45
>  meron | ibara |     45
>
> よろしくお願いします
>




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