• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLでレコードにある合計項目を使って計算を出したい)

SQLでレコードにある合計項目を使って計算を出したい

このQ&Aのポイント
  • SQLでレコードにある合計項目を使って計算をしたい場合、SUM関数とGROUP BY句を使用して各項目CDの金額を合計することができます。
  • ただし、項目CD99の金額を全体の金額合計として使用し、各項目CDの金額で割るという計算を行いたい場合は、サブクエリを使用する必要があります。
  • これにより、合計/各項目CDの金額の結果を求めることができます。しかし、実際にどのようにサブクエリを使うかは具体的なSQLの記述により異なるため、詳細なアドバイスを求める場合は具体的なSQLの記述を提供してください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

合計行があるデータなんですね。 たしかに命題にそう書いてありました。失礼しました。 しかしSQLで合計行を最初からもっていて意味がある のでしょうか?合計金額なんてものはどんどん 変わるものなのに・・・ 一応LEFT JOIN するのが妥当でしょうけど、 ホントに効率てきなのか再検討する必要があると 思いますけど・・・ SELECT `t1`.`cd` , `t2`.`price` as `total` ,sum(`t1`.`price`) AS `sum` FROM `table` as `t1` LEFT JOIN `table` as `t2` on `t2`.`cd`='99' GROUP BY `t1`.`cd` なお所定の書式1200/500となると文字列になるので 多少処理はかわりますが、CASTとかCONCATすれば できると思います

その他の回答 (4)

  • wkwk_koba
  • ベストアンサー率15% (3/20)
回答No.5

ようは、 各CD毎に合計と総合計に対する割合いを 算出したいとの事でしょうか? cd=項目CD price=金額 select t1.cd, t1.p1, t1.p1/sum(p1) as 割合 from (    select cd ,sum(price) as p1   from table0 group by cd ) t1 概念的には、 こんな感じで取れそうな気がしますが。 ※細かな記述には誤りがあるかもしれません。 総合計はもとのデータ(列)として持っているので はないですよね。 持っていても無駄だと思います。

noname#22222
noname#22222
回答No.3

(1) (1) SELECT テーブル1.Amount FROM テーブル1; ・・・・・[テーブル1 クエリ1] (2) SELECT Sum(amount) AS Total FROM テーブル1;・・・[テーブル1 クエリ2] (3) SELECT [テーブル1 クエリ1].total, [テーブル1 クエリ].amount FROM [テーブル1 クエリ1], [テーブル1 クエリ2]; まあ、一番簡単なやり方は、2つのクエリを用意して目的のクエリを完成させることです。 ID   CD   Amount 1    1    \10 2    1    \10 3    2    \20 4    2    \20 5    3    \30 total amount \90   \10 \90   \10 \90   \20 \90   \20 \90   \30 ※99=Total という考えは、どうも...と思います。 となります。

  • wkwk_koba
  • ベストアンサー率15% (3/20)
回答No.2

項目CD  金額 ------------------------- 11   100 11   100 11   300 12   100 12   100 12   300 13   200 99   1200 CD  合計/小計 11→→1200/500 12→→1200/500 13→→1200/200 と言う事でしょうか? 合計と小計をCD毎に算出したい? 何故、各CD毎に 合計が必要なのですか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>例)1200/500 が、いったいなんなのかさっぱりわかりません。 なにをどうしたらこの例になるのでしょうか? >合計/各項目cdの金額の結果を出そうとしましたが、 「合計/各項目cdの金額の結果」とはなんでしょうか? もうすこし噛み砕いて例示していただければ 有効な回答がつきやすくなると思います。

recycle_rocket
質問者

お礼

書き込み有難うございました。 すみません、見直すと計算式を間違っていました。 例)500/1200  →項目CD11の金額/合計金額 になります。合計金額の中で項目CD11の金額が占める値を出す計算式になります。 噛み砕くと 金額(=各項目CDの金額)/レコード内にある項目CD99の金額(=全体の合計)を出すには・・ という事になります。

関連するQ&A