[前][次][番号順一覧][スレッド一覧]

mysql:475

From: Tamon Nomura <Tamon Nomura <tamon@xxxxxxxxxx>>
Date: Sat, 26 Dec 1998 14:08:04 +0900
Subject: [mysql 475] Re: クロス集計の方法


tamonです。

クロス集計ってどんなものかと思ってました。(笑)

> select 
>        sum(decode(地区コード,1,売上金額,0)),
>        sum(decode(地区コード,2,売上金額,0)),
>        sum(decode(地区コード,1,0,2,0,売上金額))
> from 売上テーブル

んー、ORACLEからはなれてたんで、sumってgroup関数か忘れたけど
こうゆう使い方っていまいちなような、誤った使い方なような。
(個人的に思うだけで、他人のSQLを否定するわけじゃないですけど)

やるとすれば、

select
       decode(地区コード,1,1,2,2,0) as 地区,
       sum(売上金額)
>from 売上テーブル
group by 地区

とかやるのが自然だと思うんですが。

> 但しこれの難点は、その他の集計を書く時に、
> その他以外の項目を全て列挙して0を戻すように書かなければいけない事です。

上のであれば、この問題はないです。

> 尚、「プログラマのためのSQL」という本に、クロス集計の作り方が
> 書いてあります。
> もし宜しければ読んでみてください。

この本にそうゆうSQLで書けと書いてあるなら、私はその本、信用しません。(笑)

mysqlでやる場合、decodeがないんで

select
       if(地区コード = 1,1,if(地区コード= 2,2,0)) as 地区,
       sum(売上金額)
>from 売上テーブル
group by 地区

って感じでしょうか?


[前][次][番号順一覧][スレッド一覧]

       470 1998-12-25 18:08 [Satoshi Koiwa <koiwa] Re: クロス集計の方法                    
       471 1998-12-25 18:31 ┗[<endo@xxxxxxxxxx>   ]                                       
->     475 1998-12-26 14:08  ┗[Tamon Nomura <tamon@]                                     
       476 1998-12-26 17:35   ┗[<endo@xxxxxxxxxx>   ]