- PR -

DB2:テーブルの集計

1
投稿者投稿内容
saber21jp
会議室デビュー日: 2006/01/16
投稿数: 2
お住まい・勤務地: 東京都
投稿日時: 2006-01-16 15:06
テーブルからグループ別に月間販売額合計と年間販売額合計を求めたいのですが、
どうも上手くSQL文を書くことができません。
ご教授よろしくお願いします。

<データテーブル>
ID 販売日 販売額
----------------------
10 20050101 1,000
10 20050102 100
10 20050105 200
・
・
10 20050331 600
20 20050102 2,000
20 20050103 1,500
20 20050105 500
・
・
20 20050331 600
30 20050101 600
30 20050102 700
30 20050103 1,000
・
・
30 20050331 500

<3月を指定した場合の結果>
ID  月合計 期間合計
----------------------
10 35,000 123,500
20 11,500 43,000
30 61,000 152,400

月合計は3月の合計です。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-01-16 17:30
GROUP BY、HAVINGでいけないかな。
ミソジマエ
常連さん
会議室デビュー日: 2005/09/25
投稿数: 43
投稿日時: 2006-01-16 18:36
月間の集計を求める方法がわからないのでしょうか?
年間の集計を求める方法がわからないのでしょうか?
月間、年間の集計がわかるのであれば、求めた月間、年間の集計をIDで結合すればいけそうですね。
ただ、年間にはあるけど月間には無いIDがあるのであれば外部結合を調べてみてください。

もっといい方法がありそうですが。
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-01-17 09:21
case式を使えばいいような気がします

参考サイト
http://oraclesqlpuzzle.hp.infoseek.co.jp/7-21.html
saber21jp
会議室デビュー日: 2006/01/16
投稿数: 2
お住まい・勤務地: 東京都
投稿日時: 2006-01-17 09:48
すごい CASE式を使うとできるのですね。
月集計、年集計をそれぞれ求めることはできるのですが
月と年の集計を一度に求める方法がわかりませんでした。

SELECT ID ,
SUM(CASE MONTH(販売日) WHEN 03 THEN 販売額 END) AS '月合計',
SUM(CASE YEAR(販売日) WHEN 2005 THEN 販売額 END) AS '期間合計
FROM データテーブル
WHERE YEAR(販売日)=2005 AND MONTH(販売日)<=03
GROUP BY ID
ORDER BY ID

上のSQL文で求めることができました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)