Aggregazione di prodotti
Dati di esempio
Basta definire una tabella, dati con solo anni, mesi e interesse.
-- テーブル定義
declare @利息マスタ table
(
年月 nvarchar(6)
,利息 decimal(4, 2)
)
-- サンプルデータ挿入
insert @利息マスタ
select N'201501', 1.05
union all select N'201502', 1.03
union all select N'201503', 1.02
union all select N'201504', 1.10
union all select N'201505', 1.02
union all select N'201506', 1.06
union all select N'201507', 1.07
union all select N'201508', 1.04
union all select N'201509', 1.06
union all select N'201510', 1.07
union all select N'201511', 1.03
union all select N'201512', 1.02
-- 確認
select * from @利息マスタ
Aggregazione di prodotti
L'aggregazione del prodotto può essere ottenuta aggregando "funzione esponenziale" e "funzione logaritmica". SQL è simile al seguente:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Questa è una forma che può essere realizzata dalla natura di "funzione esponenziale" e "funzione logaritmica".
Innanzitutto, il riepilogo della funzione logaritmica è "log x + log y = log(x * y)" dalla formula. La formula esponenziale "e logx = x**" dà "e log(x*y) =x * y" applicando la formula ottenuta dalla somma delle funzioni logaritmiche. (x * y * ... (La parte di è il numero di dati)
Corrispondenza zero e negativa
Poiché una funzione logaritmica non può essere minore o uguale a 0, si verifica un errore se la destinazione di aggregazione contiene un numero minore o uguale a 0. Per contenere numeri inferiori a 0, utilizzare SQL come segue:
-- 集計(ゼロ、負対応)
select
case
when min(abs([利息])) = 0 then 0
else
exp(sum(log(abs(nullif([利息], 0)))))
* round(0.5 - count(nullif(sign(sign([利息]) + 0.5), 1)) % 2, 0)
end as [利息合計]
from @利息マスタ
-- 結果:1.73968081491318