Termékek összesítése

Oldal frissítve :
Oldal létrehozásának dátuma :

Mintaadatok

Egyszerűen határozzon meg egy táblázatot, adatokat csak évekkel, hónapokkal és érdeklődéssel.

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

Összesítő termékek

A termék összesítése az "exponenciális függvény" és a "logaritmikus függvény" összesítésével érhető el. Az SQL így néz ki:

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

Ez egy olyan forma, amely az "exponenciális függvény" és a "logaritmikus függvény" természetével valósítható meg.

Először is, a logaritmikus függvény összefoglalása a képlet "log x + log y = log(x * y)" a képlet szerint. Az "e logx = x**" exponenciális képlet az "e log(x*y) =x * y" értéket adja a logaritmikus függvények összegével kapott képlet alkalmazásával. (x * y * ... (Ennek része az adatok száma)

Nulla és negatív levelezés

Mivel egy logaritmikus függvény nem lehet kisebb vagy egyenlő 0-nál, hiba lép fel, ha az összesítési cél 0-nál kisebb vagy azzal egyenlő számot tartalmaz. A 0 alatti számok elhelyezéséhez használja az SQL-t az alábbiak szerint:

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