Entschuldigung für den schlechten Titel, ich war mir nicht sicher, was ein guter Titel dafür sein würde.
Dies sind derzeit (vereinfachte Ansicht der) Daten, mit denen ich arbeite
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Ich muss den Prozentsatz der gesamten Provision berechnen, für den jeder Agent verantwortlich ist.
Für Agent Smith würde der Prozentsatz also wie folgt berechnet werden (Agent Smith's commission / Sum(commission)*100
Meine erwarteten Daten wären also
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
Ich habe eine Funktion, die die Provision für jeden Agenten zurückgibt. Ich habe eine andere Funktion, die den Prozentsatz als zurückgibt (Commission/Sum(Commission))*100
. Das Problem ist, dass dies Sum(commission)
für jede einzelne Zeile berechnet wird. Angesichts der Tatsache, dass diese Abfrage in einem Data Warehouse ausgeführt würde, wäre der Datensatz ziemlich umfangreich (derzeit sind es knapp 2000 Datensätze) und ganz ehrlich, ein schlechter Ansatz (IMO) ).
Gibt es eine Möglichkeit, das Sum(Commission)
nicht für jede abgerufene Zeile berechnen zu lassen?
Ich dachte etwas in den Zeilen einer zweiteiligen Abfrage, der erste Teil würde das sum(commission)
in eine Paketvariable / -typ holen und der zweite Teil würde sich auf diesen vorberechneten Wert beziehen, aber ich bin nicht sicher, wie ich dies erreichen kann.
Ich kann nur SQL verwenden und arbeite mit Oracle 10g R2.