Tổng hợp sản phẩm

Trang Cập Nhật :
Ngày tạo trang :

Dữ liệu Mẫu

Đơn giản chỉ cần xác định một bảng, dữ liệu chỉ với năm, tháng và lãi suất.

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

Tổng hợp sản phẩm

Sự tổng hợp của sản phẩm có thể thu được bằng cách tổng hợp "hàm mũ" và "chức năng logarit". SQL trông như thế này:

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

Đây là một hình thức có thể được thực hiện bởi bản chất của "hàm mũ" và "chức năng logarit".

Đầu tiên, tóm tắt hàm logarit là "log x + log y = log(x * y)" theo công thức. Công thức hàm mũ "e logx = x**" cho "e log(x*y) =x * y" bằng cách áp dụng công thức thu được bởi tổng các hàm logarit. (x * y *... (Một phần của số lượng dữ liệu)

Thư từ 0 và âm

Bởi vì một hàm logarit không thể nhỏ hơn hoặc bằng 0, một lỗi xảy ra nếu mục tiêu tổng hợp chứa một số nhỏ hơn hoặc bằng 0. Để phù hợp với các số dưới 0, hãy sử dụng SQL như sau:

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