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