Ürünleri toplama
Ö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