Ürünleri toplama

Sayfa güncel :
Sayfa oluşturma tarihi :

Örnek Veriler

Sadece yıl, ay ve ilgi alanı içeren bir tablo, veri tanımlamanız yeterlidir.

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

Ürünleri Toplama

Ürünün toplanması, "üstel fonksiyon" ve "logaritmik fonksiyon" un toplanmasıyla elde edilebilir. SQL şöyle görünür:

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

Bu, "üstel fonksiyon" ve "logaritmik fonksiyon" doğası gereği gerçekleştirilebilecek bir formdur.

İlk olarak, logaritmik fonksiyonun özeti formüle göre "log x + log y = log(x * y)" şeklindedir. "e logx = x**" üstel formülü, logaritmik fonksiyonların toplamı ile elde edilen formülü uygulayarak "e log(x*y) =x * y" değerini verir. (x * y * ... (Kısmı veri sayısıdır)

Sıfır ve negatif yazışmalar

Logaritmik bir işlev 0'dan küçük veya 0'a eşit olamayacağından, toplama hedefi 0'dan küçük veya 0'a eşit bir sayı içeriyorsa bir hata oluşur. 0'ın altındaki sayıları barındırmak için SQL'i aşağıdaki gibi kullanın:

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