Aggregera produkter

Sidan uppdaterad :
Datum för skapande av sida :

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