Disculpas por el mal título, no estaba seguro de cuál sería un buen título para esto.
Esta es actualmente (vista simplificada de) los datos con los que estoy trabajando
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Necesito calcular el porcentaje de la comisión total, cada agente es responsable.
Entonces, para el Agente Smith, el Porcentaje se calcularía como (Agent Smith's commission / Sum(commission)*100
Entonces, mis datos esperados serían
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
Tengo una función que devuelve la comisión para cada agente. Tengo otra función que devuelve el porcentaje como (Commission/Sum(Commission))*100
. El problema es que Sum(commission)
se calcula para todas y cada una de las filas, y dado que esta consulta se ejecutaría en un Data Warehouse, el conjunto de datos sería bastante grande (actualmente, está por debajo de 2000 registros) y, sinceramente, un mal enfoque (IMO )
¿Hay alguna manera de que Sum(Commission)
no se calcule para cada fila que se va a buscar?
Estaba pensando algo en las líneas de una consulta de 2 partes, la primera parte buscaría la sum(commission)
variable / tipo de paquete y la segunda parte se referiría a este valor precalculado, pero no estoy seguro de cómo puedo lograr esto.
Estoy limitado a usar SQL y estoy ejecutando Oracle 10g R2.