Desculpas pelo título ruim, eu não tinha certeza do que seria um bom título para isso.
Atualmente, esses são (visão simplificada dos) dados com os quais estou trabalhando
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Preciso calcular a porcentagem da comissão total pela qual cada agente é responsável.
Portanto, para o agente Smith, a porcentagem seria calculada como (Agent Smith's commission / Sum(commission)*100
Então, meus dados esperados seriam
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
Eu tenho uma função retornando a comissão para cada agente. Eu tenho outra função retornando a porcentagem como (Commission/Sum(Commission))*100
. O problema é que Sum(commission)
é calculado para cada linha e, como essa consulta seria executada em um Data Warehouse, o conjunto de dados seria bastante grande (atualmente, tem pouco menos de 2000 registros) e, honestamente, uma abordagem ruim (IMO )
Existe uma maneira de Sum(Commission)
não calcular para cada linha que está sendo buscada?
Eu estava pensando em algo nas linhas de uma consulta de 2 partes, a primeira parte buscaria a sum(commission)
variável / tipo de pacote e a segunda parte se referiria a esse valor pré-calculado, mas não tenho certeza de como conseguir isso.
Estou limitado a usar SQL e estou executando no Oracle 10g R2.