[pgsql-jp: 32547] Re: ある列のデータが同一で別のある列のデータが最大なものの抽出

馬場 泰明 ( 川上) kawakami @ mxe.nes.nec.co.jp
2004年 3月 23日 (火) 15:59:32 JST


こんにちは。馬場です。
自己レスです。

PostgreSQL(7.3.4)でも同じ結果が得られました。
ただし、Oracle の場合は order by を入れると勝手にソートして
しまうみたいですね。

sampledb=# select * from test;
 id | trai_no
----+---------
  1 |       1
  2 |       1
  1 |       2
  3 |       1
  4 |       1
  2 |       2
  2 |       3
(7 rows)

sampledb=#
sampledb=# \d test
      Table "public.test"
 Column  |  Type   | Modifiers
---------+---------+-----------
 id      | integer |
 trai_no | integer |

sampledb=#
sampledb=# select * from test
sampledb-# where (id,trai_no) in (select id,max(trai_no) from test group by id);

 id | trai_no
----+---------
  1 |       2
  3 |       1
  4 |       1
  2 |       3
(4 rows)


以上ご参考になれば幸いです。

/ばば やすあき

2004/03/23 15:06:13 +0900に"馬場 ( 川上)泰明" <kawakami @ mxe.nes.nec.co.jp>さんに頂いた
「[pgsql-jp: 32546] Re: ある列のデータが同一で別のある列のデータが最大なものの抽出」への返事です。
>はじめまして。馬場と申します。
>お世話になります。
>
>すみません、oracle でしか動作確認していないのですが、
>以下の SQL ではいかがでしょうか。
>
>SQL> desc test
> 名前                                      NULL?    型
> ----------------------------------------- -------- ----------------------------
> ID                                                 NUMBER(3)
> TRAI_NO                                            NUMBER(3)
>
>SQL> select * from test;
>
>        ID    TRAI_NO
>---------- ----------
>         1          1
>         2          1
>         1          2
>         3          1
>         4          1
>         2          2
>         2          3
>
>7行が選択されました。
>
>SQL> select * from test
>  2  where (id,trai_no) in (select id,max(trai_no) from test group by id);
>
>        ID    TRAI_NO
>---------- ----------
>         1          2
>         2          3
>         3          1
>         4          1
>
>もしも PostgreSQL 固有のエラーで困っていらっしゃるのでしたら
>すみません。
>
>以上よろしくお願い致します。
>
>/ ばば やすあき
>



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