कुल उत्पाद

पेज अद्यतन :
पेज निर्माण की तारीख :

नमूना डेटा

बस एक तालिका, डेटा को केवल वर्षों, महीनों और ब्याज के साथ परिभाषित करें।

-- テーブル定義
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)" है। घातीय सूत्र "e 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