悪いタイトルをおologiesび申し上げますが、これに適したタイトルになるかどうかはわかりませんでした。
これは現在(の簡略化されたビュー)私が作業しているデータです
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
各エージェントが担当するコミッション合計の割合を計算する必要があります。
したがって、エージェントスミスの場合、パーセンテージは次のように計算されます。 (Agent Smith's commission / Sum(commission)*100
だから、私の予想されるデータは
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
各エージェントのコミッションを返す機能があります。パーセンテージを返す別の関数があります(Commission/Sum(Commission))*100
。問題は、Sum(commission)
各行ごとに計算され、このクエリがデータウェアハウスで実行されることを考えると、データセットがかなり大きくなり(現在、2000レコードをわずかに下回っている)、正直なところ、悪いアプローチ(IMO )。
Sum(Commission)
フェッチされるすべての行に対して計算しないようにする方法はありますか?
私は2つの部分のクエリの行で何かを考えていました。最初の部分はsum(commission)
パッケージ変数/タイプにフェッチし、2番目の部分はこの事前に計算された値を参照しますが、これをどのように達成できるかわかりません。
SQLの使用に制限されており、Oracle 10g R2で実行しています。