プロが教える店舗&オフィスのセキュリティ対策術

項目CD  金額
-------------------------
11   100
11   100
11   300
12   100
12   100
12   300
13   200
99   1200

項目CD99が全体の金額合計になるのですが、これを使って
合計/各項目cdの金額の結果をSQLで出したいです。
例)1200/500

SUM(金額)、GROUP BY項目CDで以下のようにまでしました。
項目CD  金額
-------------------------
11   500
12   500
13   200
99   1200

このSQLをサブクエリにして、その上の階層に
合計/各項目cdの金額の結果を出そうとしましたが、
いろいろしてみましたがうまく出来ません。
アドバイス頂けると助かります。宜しくお願いします。

A 回答 (5件)

>例)1200/500



が、いったいなんなのかさっぱりわかりません。
なにをどうしたらこの例になるのでしょうか?

>合計/各項目cdの金額の結果を出そうとしましたが、

「合計/各項目cdの金額の結果」とはなんでしょうか?
もうすこし噛み砕いて例示していただければ
有効な回答がつきやすくなると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/03/02 11:28

項目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毎に
合計が必要なのですか?
    • good
    • 0

(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 という考えは、どうも...と思います。
となります。
    • good
    • 0

合計行があるデータなんですね。


たしかに命題にそう書いてありました。失礼しました。

しかし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すれば
できると思います
    • good
    • 0

ようは、


各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

概念的には、
こんな感じで取れそうな気がしますが。
※細かな記述には誤りがあるかもしれません。

総合計はもとのデータ(列)として持っているので
はないですよね。
持っていても無駄だと思います。
    • good
    • 0

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