Mengagregatkan produk
Data Sampel
Hanya tentukan jadual, data dengan hanya tahun, bulan dan minat.
-- テーブル定義
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 @利息マスタ
Mengagregatkan Produk
Pengagregatan produk boleh diperolehi dengan mengagregatkan "fungsi eksponen" dan "fungsi logaritma". SQL kelihatan seperti ini:
-- 集計
select exp(sum(log([利息]))) from @利息マスタ
-- 結果:1.73968081491318
Ini adalah bentuk yang boleh direalisasikan oleh sifat "fungsi eksponen" dan "fungsi logaritma".
Pertama, ringkasan fungsi logaritma ialah "log x + log y = log(x * y)" mengikut formula. Formula eksponen "e logx = x**" memberikan "e log(x*y) =x * y" dengan menggunakan formula yang diperolehi dengan jumlah fungsi logaritma. (x * y * ... (Bahagian bilangan data)
Surat-menyurat sifar dan negatif
Oleh kerana fungsi logaritma tidak boleh kurang daripada atau sama dengan 0, ralat berlaku jika sasaran pengagregatan mengandungi nombor kurang daripada atau sama dengan 0. Untuk memuatkan nombor di bawah 0, gunakan SQL seperti 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