Sammenlægning af produkter

Side opdateret :
Dato for oprettelse af side :

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