Mi scuso per il cattivo titolo, non ero sicuro di quale sarebbe stato un buon titolo per questo.
Attualmente sono (vista semplificata dei) dati con cui sto lavorando
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Devo calcolare la percentuale della commissione totale, di cui ogni agente è responsabile.
Quindi, per l'agente Smith, la percentuale sarebbe calcolata come (Agent Smith's commission / Sum(commission)*100
Quindi, i miei dati previsti sarebbero
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
Ho una funzione che restituisce la commissione per ciascun agente. Ho un'altra funzione che restituisce la percentuale come (Commission/Sum(Commission))*100
. Il problema è che Sum(commission)
viene calcolato per ogni riga e dato che questa query verrebbe eseguita su un data warehouse, il set di dati sarebbe piuttosto grande (attualmente, è poco meno di 2000 record) e, onestamente, un approccio errato (IMO ).
C'è un modo per Sum(Commission)
non calcolare per ogni riga che viene recuperata?
Stavo pensando a qualcosa sulla linea di una query in 2 parti, la prima parte avrebbe recuperato la sum(commission)
variabile in un tipo / tipo di pacchetto e la seconda parte si sarebbe riferita a questo valore pre-calcolato, ma non sono sicuro di come posso ottenere questo.
Sono limitato all'utilizzo di SQL e utilizzo Oracle 10g R2.