[pgsql-jp: 35756] Re: CREATE VIEWによる集計について

日本ユニシステム 堀 世志之 y.hori @ uni-net.co.jp
2005年 7月 27日 (水) 11:31:05 JST


よしボブ@三鷹市民様

> 今回頂いたSQL(修正版)と結果が
> select cid, largeq, sum(case enq1 when 1 then 1 else 0 end ) as enq_1,
> sum(case enq1 when 2 then 1 else 0 end )  from kenqt group
> by cid, largeq, enq1;
>  cid | largeq | enq_1 | sum
> ---+-----+-----+-----
>   57 |      1 |       3 |   0
>   57 |      1 |       0 |   4
>   57 |      1 |       0 |   0
>   57 |      1 |       0 |   0
>   57 |      2 |     13 |   0
>   57 |      3 |     13 |   0
>
> でした。
すみません、SQL文がおかしいですね^^

>  cid | largeq | sum(値1) | sum(値2) | sum(値3) | sum(値4) |
> ---+-----+---------+--------+--------+--------+
>   57 |      1 |              3 |            4 |          2 |           4 |
>   57 |      2 |            13 |            0 |          0 |           0 |
>   57 |      3 |            13 |            0 |          0 |           0 |
>
> にしたいのですが、無理なのでしょうか。

でしたら
select
 cid
,largeq
,sum(case enq1 when 1 then 1 else 0 end ) as enq1合計(値=1)
,sum(case enq1 when 2 then 1 else 0 end ) as enq1合計(値=2)
,sum(case enq1 when 3 then 1 else 0 end ) as enq1合計(値=3)
,sum(case enq1 when 4 then 1 else 0 end ) as enq1合計(値=4)
  from kenqt
group by cid, largeq;

でOKだと思います。(テーブルとかを実際作成してSQL文を書いてないので…)

私も、初心者なので、このsql文は強引な方法です。
もっとスマートな方法を勉強してみてください。
もっとスマートな方法がわかったら教えてください^^;(ぉ




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