Menggabungkan produk

Halaman Diperbarui :
Tanggal pembuatan halaman :

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