• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLの集計について教えてください。)

SQLの集計方法とは?

このQ&Aのポイント
  • SQLの集計方法とは、特定の列をグループ化し、そのグループごとの合計や平均、最大値などを計算する方法です。
  • 上記の質問では、年度、月、部署コード、商品コードでテーブルをグループ化して、金額の合計と累計金額を計算する必要があります。
  • これは、GROUP BYを使用して特定の列でグループ化し、SUM関数とWindow関数を使用して合計と累計金額を計算することで実現することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

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.商品コード ;

aykluceluy
質問者

お礼

ありがとうございます。 環境が無いのですぐには試せませんが、 この方法か、No2の方が書いてくださった 分析関数を使う方法のどちらかでいけそうですね。 非常に助かりました。

その他の回答 (2)

回答No.3

Yahoo!知恵袋の方でも同じ質問をし、既に回答ももらっているようですが。。。 「累計」ではなく、「『年度+部署コード』毎の合計を、各行にくっつけるだけ」のように見えますが? そうであれば、サブクエリでの集計結果をジョインするだけです。 本当にいわゆる「累計させていく」なら、Oracleであれば既に分析関数が実装されてういるバージョンだと思いますが?

aykluceluy
質問者

お礼

知恵袋で投稿した時間にyahooのサーバエラーが発生していて、 「ページが見つかりません。」エラーが質問時と回答時に表示されていたため、 緊急性が高い質問なのでこちらで別途質問しました。 重複質問の」ようになってしまい申し訳ございません。

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.2

環境が無いので試してません。あしからず。 SELECT 年度, 月, 部署コード, 商品コード, SUM(金額) AS 合計金額, SUM(SUM(金額)) OVER(PARTITION BY 年度, 部署コード, 商品コード) AS 累計金額 FROM テーブル GROUP BY 年度, 月, 部署コード, 商品コード ORDER BY 年度, 部署コード, 商品コード, 月

aykluceluy
質問者

お礼

ありがとうございます。 環境が無いのですぐには試せませんが、 この方法か、No1の方が書いてくださった サマリと結合する方法のどちらかでいけそうですね。 非常に助かりました。

関連するQ&A