Aggregera produkter
Exempel på data
Definiera helt enkelt en tabell, data med bara år, månader och ränta.
-- テーブル定義
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 @利息マスタ
Aggregera produkter
Aggregeringen av produkten kan erhållas genom att aggregera "exponentiell funktion" och "logaritmisk funktion". SQL ser ut så här:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Detta är en form som kan realiseras av naturen av "exponentiell funktion" och "logaritmisk funktion".
Först är sammanfattningen av den logaritmiska funktionen "log x + log y = log (x * y)" med formeln. Den exponentiella formeln "e logx = x **" ger "e log (x * y) = x * y" genom att tillämpa formeln erhållen med summan av de logaritmiska funktionerna. (x * y * ... (Delen av är antalet data)
Noll och negativ korrespondens
Eftersom en logaritmisk funktion inte kan vara mindre än eller lika med 0 uppstår ett fel om aggregeringsmålet innehåller ett tal som är mindre än eller lika med 0. Om du vill hantera tal under 0 använder du SQL på följande sätt:
-- 集計(ゼロ、負対応)
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