Agregowanie produktów

Strona zaktualizowana :
Data utworzenia strony :

Przykładowe dane

Po prostu zdefiniuj tabelę, dane tylko z latami, miesiącami i odsetkami.

-- テーブル定義
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 @利息マスタ

Agregacja produktów

Agregację produktu można uzyskać przez agregację "funkcji wykładniczej" i "funkcji logarytmicznej". SQL wygląda tak:

-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318

Jest to forma, która może być zrealizowana przez naturę "funkcji wykładniczej" i "funkcji logarytmicznej".

Po pierwsze, podsumowanie funkcji logarytmicznej to "log x + log y = log(x * y)" według formuły. Wzór wykładniczy "e logx = x**" daje "e log(x*y) =x * y" przez zastosowanie wzoru otrzymanego przez sumę funkcji logarytmicznych. (x * y * ... (Część to liczba danych)

Korespondencja zerowa i negatywna

Ponieważ funkcja logarytmiczna nie może być mniejsza lub równa 0, błąd występuje, jeśli obiekt docelowy agregacji zawiera liczbę mniejszą lub równą 0. Aby uwzględnić liczby poniżej 0, użyj SQL w następujący sposób:

-- 集計(ゼロ、負対応)
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