Вибачте за поганий титул, я не був впевнений, що буде хорошим титулом для цього.
Наразі це дані (спрощений перегляд) даних, з якими я працюю
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.