- ベストアンサー
SQLの集計方法とは?
- SQLの集計方法とは、特定の列をグループ化し、そのグループごとの合計や平均、最大値などを計算する方法です。
- 上記の質問では、年度、月、部署コード、商品コードでテーブルをグループ化して、金額の合計と累計金額を計算する必要があります。
- これは、GROUP BYを使用して特定の列でグループ化し、SUM関数とWindow関数を使用して合計と累計金額を計算することで実現することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
TESTしてませんが。 --SQL*PlusをSpoolする場合のおまじない set linesize 30000 set heading off set pagesize 0 set trimspool on set colsep | --SQL本体 select a.年度, a.月, a.部署コード, a.商品コード, a.金額, b.累計金額 from ( select 年度, 月, 部署コード, 商品コード, sum(金額) 金額 from テーブル group by 年度, 月, 部署コード, 商品コード ) a, ( select 年度, 部署コード, 商品コード, sum(金額) 累計金額 from テーブル group by 年度, 部署コード, 商品コード ) b where a.年度= b.年度 and a.部署コード = b.部署コード and a.商品コード = b.商品コード order by a.年度, a.月, a.部署コード, a.商品コード ;
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
Yahoo!知恵袋の方でも同じ質問をし、既に回答ももらっているようですが。。。 「累計」ではなく、「『年度+部署コード』毎の合計を、各行にくっつけるだけ」のように見えますが? そうであれば、サブクエリでの集計結果をジョインするだけです。 本当にいわゆる「累計させていく」なら、Oracleであれば既に分析関数が実装されてういるバージョンだと思いますが?
お礼
知恵袋で投稿した時間にyahooのサーバエラーが発生していて、 「ページが見つかりません。」エラーが質問時と回答時に表示されていたため、 緊急性が高い質問なのでこちらで別途質問しました。 重複質問の」ようになってしまい申し訳ございません。
- yorozu_ya
- ベストアンサー率54% (76/140)
環境が無いので試してません。あしからず。 SELECT 年度, 月, 部署コード, 商品コード, SUM(金額) AS 合計金額, SUM(SUM(金額)) OVER(PARTITION BY 年度, 部署コード, 商品コード) AS 累計金額 FROM テーブル GROUP BY 年度, 月, 部署コード, 商品コード ORDER BY 年度, 部署コード, 商品コード, 月
お礼
ありがとうございます。 環境が無いのですぐには試せませんが、 この方法か、No1の方が書いてくださった サマリと結合する方法のどちらかでいけそうですね。 非常に助かりました。
お礼
ありがとうございます。 環境が無いのですぐには試せませんが、 この方法か、No2の方が書いてくださった 分析関数を使う方法のどちらかでいけそうですね。 非常に助かりました。