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