可使用SUM彙總函數將欄位進行加法之總合運算,但如需進行如計算多期報酬率合計之乘法總合運算,將通常會改用程式迴圈或CURSOR運算方式,但其實可使用對數(logarithm)運算基本概念即可完成。公式如下:
欄位中多筆資料之乘法運算,首先需透過式(1)對運運算和差基本概念,可將乘法運算轉換為加法運算,再將合計值透過式(2) 還原運算概念,將原先對數轉換運算進行還原,即為所示。以下將使用SUM() OVER()分析函數替代SUM()函數,以便同時顯示原始資料及總計結果,如下:
SQL / Result
|
說明
|
|
ORACLE
|
SELECT column_value
, SUM(column_value) OVER() Total_Sum
, EXP(SUM(LN(column_value)) OVER()) Total_Multiplication
FROM TABLE(SYS.DBMS_DEBUG_VC2COLL( 1, 2, 4 ))
|
1. LN運算將乘法變加法
2. 以EXP還原
|
MSSQL
|
SELECT Val
, SUM(VAL) OVER() Total_Sum
, EXP(SUM(LOG(VAL)) OVER()) Total_Multiplication
FROM (VALUES(1),(2),(4)) AS Test(Val)
|
MSSQL中LOG函數是代表以自然對數(e)為底之LN (Natural logarithm)。
沒有留言:
張貼留言