Agregácia produktov
Stránka aktualizovaná :
Dátum vytvorenia strany :
Vzorové údaje
Jednoducho definujte tabuľku, údaje len s rokmi, mesiacmi a záujmom.
-- テーブル定義
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 @利息マスタ
Agregácia produktov
Agregáciu produktu je možné získať agregáciou "exponenciálnej funkcie" a "logaritmickej funkcie". SQL vyzerá takto:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Ide o formu, ktorá sa dá realizovať povahou "exponenciálnej funkcie" a "logaritmickej funkcie".
Po prvé, súhrn logaritmickej funkcie je "log x + log y = log(x * y)" vzorcom. Exponenciálny vzorec "e logx = x**" dáva "e log(x*y) =x * y" použitím vzorca získaného súčtom logaritmických funkcií. (x * y * ... ... (Časť je počet údajov)
Nulová a negatívna korešpondencia
Keďže logaritmická funkcia nemôže byť menšia alebo rovná 0, chyba nastane, ak cieľ agregácie obsahuje číslo menšie alebo rovné 0. Ak chcete vyhovieť číslam pod 0, použite SQL takto:
-- 集計(ゼロ、負対応)
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