Agregació de productes
Dades d'exemple
Simplement definir una taula, dades amb només anys, mesos i interessos.
-- テーブル定義
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 @利息マスタ
Productes agregats
L'agregació del producte es pot obtenir agregant "funció exponencial" i "funció logarítmica". SQL té aquest aspecte:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Aquesta és una forma que es pot realitzar per la naturalesa de la "funció exponencial" i la "funció logarítmica".
En primer lloc, el resum de la funció logarítmica és "log x + log y = log(x * y)" per la fórmula. La fórmula exponencial "e logx = x**" dóna "log e(x*y) =x * y" aplicant la fórmula obtinguda per la suma de les funcions logarítmiques. (x * y * ... (La part és el nombre de dades)
Correspondència zero i negativa
Com que una funció logarítmica no pot ser inferior o igual a 0, es produeix un error si l'objectiu d'agregació conté un nombre inferior o igual a 0. Per acomodar els números inferiors a 0, utilitzeu SQL de la manera següent:
-- 集計(ゼロ、負対応)
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