重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

カテゴリと個別商品の集計SQLについて質問です。
postgresのバージョンは9.0です。

次のテーブルより
------------------------------------------
id  カテゴリ  商品名    日付       値
------------------------------------------
1  野菜    ホウレン草  2010-01-01  100
2  野菜    ホウレン草  2010-01-02  100
3  野菜    ホウレン草  2010-02-02  100
4  野菜    キャベツ    2010-01-02  200
5  肉      牛肉      2010-01-01  500
6  肉      牛肉      2010-01-02  500
--------------------------------------------

下の結果を得るSQLを考えています。

月毎の値の集計
カテゴリ  商品名     1月  2月    合計   カテゴリ合計  カテゴリ合計と合計との差
-----------------------------------------------------------------------------
野菜    ホウレン草   200  100    300    500        200
野菜    キャベツ     200    0    200    500        300
肉      牛肉      1000   0    1000   1000         0
-----------------------------------------------------------------------------

ここでカテゴリの合計とは 上の場合、
ホウレン草(300)+キャベツ(200)=カテゴリ野菜(500)、です。
クロス集計とサブクエリを使えば出来そうなのですが、カテゴリ合計を出す部分の
SQLが思いつきません、よろしくお願い致します。

A 回答 (1件)

こんばんは。



多分postgresはウィンドウ関数が使えたはず・・・?

select カテゴリ, 商品名,
case when 日付が1月なら(ここの条件がわからん・・・) then 値 else 0 end as 1月,
case when 日付が2月なら(ここの条件がわからん・・・) then 値 else 0 end as 2月,
sum(値) over(partition by カテゴリ) as カテゴリ合計
以下略・・・

最近postgresやってないので、SQL忘れた・・・。
考え方はあってると思いますが?
    • good
    • 0
この回答へのお礼

Postgresのマニュアルでウィンドウ関数の項目を見てみました、目的の結果が得られそうです。ありがとうございました。

お礼日時:2011/01/26 23:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す