不好意思,我很抱歉,对此我不确定。
这是我目前正在使用的数据(的简化视图)
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上运行。