[pgsql-jp: 32102] Re: max()のNULLの時の処理

HABU Akihiro(羽生章洋) habu @ starlogic.jp
2004年 1月 26日 (月) 10:49:08 JST


Hirohisa Teramoto <teramoto @ em.fxss.co.jp>さん:

>  ちょっと興味があって SQL 文を実行して試してみたのですが
> これはおそらく
> 
>   select coalesce(max(aaa),0) as maxaaa from table where bbb = '123'
> 
> という SQL を意図されていたのではないかと思うのですが
> いかがでしょうか?

今回は、各Rowのレベルでまず、null値を0にしてしまい、
それを比較するということで、中に入れています。

create table t1 (aaa integer,bbb varchar);

insert into t1 values (10,'123');
insert into t1 values (20,'123');
insert into t1 values (30,'123');
insert into t1 values (40,'234');
insert into t1 values (50,'234');
insert into t1 values (60,'234');
insert into t1 values (null,'345');

select * from t1;

select max( coalesce(aaa,0) ) as maxaaa from t1 where bbb = '123';
select max( coalesce(aaa,0) ) as maxaaa from t1 where bbb = '234';
select max( coalesce(aaa,0) ) as maxaaa from t1 where bbb = '345';

select max( aaa ) as maxaaa from t1 group by bbb;
select max( coalesce(aaa,0) ) as maxaaa from t1 group by bbb;

こんな感じです。単に「最終結果がnullの場合、0にする」ということで
あれば、お書きいただいた形で良いかと思います。もし集合関数の中で
演算をする場合(max(aaa+ccc)など)であれば、中にcoalesceを入れますので
癖で書きました。今回だとどちらでもいいと思います(^^)


────────────────────────────────
株式会社スターロジック(http://www.starlogic.jp/)
羽生 章洋            (mailto:habu @ starlogic.jp)
─PR──────────────────────────────
国産オープンソースJavaAPサーバ http://www.seasar.org/
成功をマネジメントする     http://www.u-management.com/
ワクワク音楽体験サイト     http://www.air-beat.com/
経営とITのおいしい関係     http://www.mag2.com/m/0000113816.htm
国産オープンソースFlash汎用ソケットサーバ
http://www.geocities.co.jp/SiliconValley-PaloAlto/8242/
ITスペシャリストの実力診断
http://www.etech.ne.jp/skillup/yontaku/index.html
────────────────────────────────



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