Zbirni izdelki
Stran posodobljena :
Datum ustvarjanja strani :
Vzorčni podatki
Preprosto definirajte tabelo, podatke z le leti, meseci in obrestmi.
-- テーブル定義
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 @利息マスタ
Zbirni izdelki
Seštevanje izdelka se lahko pridobi z združevanjem »eksponencialne funkcije« in »logaritamske funkcije«. SQL izgleda takole:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
To je oblika, ki jo je mogoče uresničiti po naravi »eksponencialne funkcije« in »logaritamske funkcije«.
Najprej je povzetek logaritamske funkcije »log x + log y = log(x * y)« po formuli. Eksponencialna formula "e logx = x**" daje "e log(x*y) = x * y" z uporabo formule, pridobljene z vsoto logaritamskih funkcij. (x * y * ... (Del je število podatkov)
Nič in negativna korespondenca
Ker logaritamska funkcija ne more biti manjša ali enaka 0, pride do napake, če cilj združevanja vsebuje število, manjše ali enako 0. Če želite ujemati številke pod 0, uporabite SQL na naslednji način:
-- 集計(ゼロ、負対応)
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