Вибачте за поганий титул, я не був впевнений, що буде хорошим титулом для цього.
Наразі це дані (спрощений перегляд) даних, з якими я працюю
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
Мені потрібно підрахувати відсоток від загальної комісії, за що відповідає кожен агент.
Отже, для агента Сміта відсоток буде обчислюватися як (Agent Smith's commission / Sum(commission)*100
Отже, мої очікувані дані будуть
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
У мене є функція повернення комісії за кожного агента. У мене є ще одна функція, що повертає відсоток як (Commission/Sum(Commission))*100
. Проблема полягає в тому, що Sum(commission)
обчислюється для кожного ряду, а враховуючи, що цей запит буде виконуватися в сховищі даних, набір даних буде досить великим (на даний момент це трохи менше 2000 записів) і, чесно кажучи, поганим підходом (IMO ).
Чи існує спосіб Sum(Commission)
не обчислити кожен отриманий рядок?
Я щось думав у рядках запиту з двох частин, перша частина отримала sum(commission)
змінну / тип пакету, а друга частина посилалася б на це попередньо обчислене значення, але я не впевнений, як мені це досягти.
Я обмежений використанням SQL, і я працюю на Oracle 10g R2.