Toutes mes excuses pour le mauvais titre, je ne savais pas ce qui serait un bon titre pour ça.
Il s'agit actuellement (vue simplifiée des) données avec lesquelles je travaille
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Je dois calculer le pourcentage de la commission totale dont chaque agent est responsable.
Ainsi, pour l'agent Smith, le pourcentage serait calculé comme suit: (Agent Smith's commission / Sum(commission)*100
Donc, mes données attendues seraient
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
J'ai une fonction de restitution de la commission pour chaque agent. J'ai une autre fonction renvoyant le pourcentage comme (Commission/Sum(Commission))*100
. Le problème est que l' Sum(commission)
on calcule pour chaque ligne, et étant donné que cette requête serait exécutée sur un entrepôt de données, l'ensemble de données serait plutôt volumineux (actuellement, c'est juste un peu moins de 2000 enregistrements) et très honnêtement, une mauvaise approche (IMO ).
Existe-t-il un moyen de Sum(Commission)
ne pas calculer pour chaque ligne récupérée?
Je pensais à quelque chose sur les lignes d'une requête en 2 parties, la première partie récupérerait le sum(commission)
dans une variable / type de package et la deuxième partie ferait référence à cette valeur pré-calculée, mais je ne sais pas comment je peux y parvenir.
Je suis limité à l'utilisation de SQL et j'exécute sur Oracle 10g R2.