Sammenlægning af produkter
Eksempel på data
Du skal blot definere en tabel, data med kun år, måneder og renter.
-- テーブル定義
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 @利息マスタ
Sammenlægning af produkter
Aggregeringen af produktet kan opnås ved at aggregere "eksponentiel funktion" og "logaritmisk funktion". SQL ser sådan ud:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Dette er en form, der kan realiseres af arten af "eksponentiel funktion" og "logaritmisk funktion".
For det første er resuméet af den logaritmiske funktion "log x + log y = log(x * y)" ved hjælp af formlen. Den eksponentielle formel "e logx = x**" giver "e log(x*y) =x * y" ved at anvende formlen opnået ved summen af de logaritmiske funktioner. (x * y * ... (Den del af er antallet af data)
Nul og negativ korrespondance
Da en logaritmisk funktion ikke kan være mindre end eller lig med 0, opstår der en fejl, hvis aggregeringsmålet indeholder et tal, der er mindre end eller lig med 0. Hvis du vil rumme tal under 0, skal du bruge SQL på følgende:
-- 集計(ゼロ、負対応)
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