[pgsql-jp: 32695] Re: unionの合計取得
ISHIDA Akio
iakio @ pjam.jpweb.net
2004年 4月 6日 (火) 19:04:32 JST
こんにちは。石田@苫小牧市です。
もう解決したみたいですが、
Tadashi.Kanbayashi wrote:
> 集計条件が異なるものの総和を取得したいです。
>
> 例えば,
> 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;
であれば、case when を使うという方法もあります。
ちょっと round() を使う順番がかわってしまうのですが、
SELECT a
, round(sum(
CASE WHEN c = 1 THEN b / 9
WHEN c = 2 THEN b / 5
END), 0)
FROM tab1
GROUP BY a;
でどうでしょうか。
--
ISHIDA Akio<iakio @ pjam.jpweb.net>
pgsql-jp メーリングリストの案内