Menggabungkan produk
Contoh Data
Cukup tentukan tabel, data dengan hanya tahun, bulan, dan bunga.
-- テーブル定義
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 @利息マスタ
Menggabungkan Produk
Agregasi produk dapat diperoleh dengan menggabungkan "fungsi eksponensial" dan "fungsi logaritmik". SQL terlihat seperti ini:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Ini adalah bentuk yang dapat diwujudkan dengan sifat "fungsi eksponensial" dan "fungsi logaritmik".
Pertama, ringkasan fungsi logaritmik adalah "log x + log y = log(x * y)" dengan rumus. Rumus eksponensial "e logx = x**" memberikan "e log(x*y) =x * y" dengan menerapkan rumus yang diperoleh dengan jumlah fungsi logaritmik. (x * y * ... (Bagian dari adalah jumlah data)
Korespondensi nol dan negatif
Karena fungsi logaritmik tidak boleh kurang dari atau sama dengan 0, kesalahan terjadi jika target agregasi berisi angka yang kurang dari atau sama dengan 0. Untuk mengakomodasi angka di bawah 0, gunakan SQL sebagai berikut:
-- 集計(ゼロ、負対応)
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