[pgsql-jp: 33384] Re: 複数の値をGROUP BY での集計
Wataru Oguro
oguro @ zenrin-datacom.net
2004年 6月 25日 (金) 15:49:54 JST
oguroです。
SELECT
(
case
when data = '2' or data = '3' then '2 and 3'
when data = '1' or data = '4' then '1 and 4'
end
) as dd , SUM( num ) AS num
FROM work
GROUP BY
(
case
when data = '2' or data = '3' then '2,3 total'
when data = '1' or data = '4' then '1,4 total'
end
);
こんな感じでどうでしょう?
m-saitoh @ yamatosokki.co.jp wrote:
>斉藤と申します。
>
>以下のようなテーブルから
> category が 2 又は 3 のデータの num の合計
> category が 1 又は 4 のデータの num の合計
>を1回のSQL文で取り出すことは可能なのでしょうか。
>
>## 元テーブル - work ##
> category(int) | num(int)
>----------------------
> 1 | 5
> 1 | 2
> 2 | 7
> 2 | 9
> 2 | 2
> 3 | 1
> 3 | 6
> 4 | 2
> 4 | 9
>
>## 取り出したいデータ ##
>
> data | total
>----------------------
> 1,4 total | 18
> 2,3 total | 25
>(取り出したいデータの data の内容は何が入っていてもかまいません)
>
>SELECT (ここに何を書けばいいか解らない) AS data, SUM( num ) AS num
>FROM work
>GROUP BY data;
>
>2回実行すればいいだけなんですが、簡単にできる方法があれば1回で
>やりたいなぁと思う次第です。
>いろいろ調べてはみたんですが手がかりすら得られぬまま・・・
>ヒントだけでもいいのでよろしくお願いいたします。
>
>-=-=-=-=-=-=-=-=-=-=-=-=-=-
>m-saitoh @ yamatosokki.co.jp
>
>
pgsql-jp メーリングリストの案内