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