การรวมผลิตภัณฑ์

ปรับปรุงหน้า :
วันที่สร้างเพจ :

ข้อมูลตัวอย่าง

เพียงกําหนดตารางข้อมูลที่มีเพียงปีเดือนและดอกเบี้ย

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

การรวมผลิตภัณฑ์

การรวมของผลิตภัณฑ์สามารถรับได้โดยการรวบรวม "ฟังก์ชันเอ็กซ์โพเนนเชียล" และ "ฟังก์ชันลอการิทึม" SQL จะมีลักษณะดังนี้

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

นี่คือรูปแบบที่สามารถรับรู้ได้โดยธรรมชาติของ "ฟังก์ชันเอกซ์โพเนนเชียล" และ "ฟังก์ชันลอการิทึม"

ประการแรกสรุปของฟังก์ชันลอการิทึมคือ "log x + log y = log(x * y)" โดยสูตร สูตรเอ็กซ์โพเนนเชียล logx = x** ให้ e log(x*y) =x * y โดยใช้สูตรที่ได้รับจากผลรวมของฟังก์ชันลอการิทึม (x * y * ... (ส่วนหนึ่งของมันคือจํานวนข้อมูล)

การติดต่อเชิงลบเป็นศูนย์และเชิงลบ

เนื่องจากฟังก์ชันลอการิทึมต้องไม่น้อยกว่าหรือเท่ากับ 0 จึงมีข้อผิดพลาดเกิดขึ้นถ้าเป้าหมายการรวมมีตัวเลขที่น้อยกว่าหรือเท่ากับ 0 เมื่อต้องการปรับตัวเลขที่ต่ํากว่า 0 ให้ใช้ SQL ดังนี้

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