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