Produktu apkopošana

Lapa atjaunota :
Lapas izveides datums :

Datu paraugs

Vienkārši definējiet tabulu, datus tikai ar gadiem, mēnešiem un interesi.

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

Produktu apkopošana

Produkta agregāciju var iegūt, apvienojot "eksponenciālo funkciju" un "logaritmisko funkciju". SQL izskatās šādi:

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

Šī ir forma, ko var realizēt pēc "eksponenciālās funkcijas" un "logaritmiskās funkcijas" rakstura.

Pirmkārt, logaritmiskās funkcijas kopsavilkums pēc formulas ir "log x + log y = log(x * y)". Eksponenciālā formula "e logx = x**" dod "e log(x*y) =x * y", piemērojot formulu, kas iegūta par logaritmisko funkciju summu. (x * y * ... (Daļa ir datu skaits)

Nulles un negatīvā sarakste

Tā kā logaritmiskā funkcija nevar būt mazāka vai vienāda ar 0, rodas kļūda, ja apkopošanas mērķī ir skaitlis, kas ir mazāks vai vienāds ar 0. Lai izvietotu skaitļus zem 0, izmantojiet SQL šādi:

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