Agregowanie produktów
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