[pgsql-jp: 32692] Re: unionの合計取得

Tadashi.Kanbayashi Tadashi.Kanbayashi @ toppan.co.jp
2004年 4月 6日 (火) 18:37:15 JST


かんばやしです。
お疲れさまです。

いろいろ皆様,ご助言,
ありがとうございます。

集計条件が異なるものの総和を取得したいです。

例えば,
SQLその1:select a , round(sum(b/9),0) from tab1 where c=1 group by a;
SQLその2:select a , round(sum(b/5),0)  from tab1 where c=2  group by a;
で,1と2の合計値を算出したく。

select a,sum(sum_b)
from
    (
        select a as a, round(sum(b/9),0) as sum_b from tab1 where c = 1
group by a
        union
        select a as a, round(sum(b/5),0) as sum_b from tab1 where c = 2
group by a
    ) as union_data
group by a;

でいけそうでしょうか(試したらできました)。

ありがとうございます。


----- Original Message ----- 
From: "Kenji Ono" <ono @ fjct.fujitsu.com>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Tuesday, April 06, 2004 5:13 PM
Subject: [pgsql-jp: 32689] Re: unionの合計取得


>
> 小野です。
>
> そうですよね。
> sum、と、count(*)、では意味が全然違ってました。
> 失礼しました。
>
> それにしても最初の投稿者の人は何故にUNIONにしたいのだろう。
> サンプルが違うのかな?
>
>
> > Subject : [pgsql-jp: 32688] Re: unionの合計取得
> > From : Tietew <tietew @ tietew.net>
> > Date : Tue, 06 Apr 2004 16:55:59 +0900
> > >
> > > SELECT a, count(*) as wkCount FROM tab1 WHERE c IN (1, 2) GROUP BY a;
> > >
> > > でもないんでしょうか。
> >
> > sum は総和で count は列数ですから意味が違います。
> >
> > > sum(b)だと、Group By a の意味が???
> >
> > a でグループ化したグループ内の,b の総和という意味になります。
> > count(*) だと a でグループ化した各々の列数の意味になります。




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