Agregace produktů

Stránky aktualizovány :
Datum vytvoření stránky :

Ukázková data

Jednoduše definujte tabulku, data pouze s roky, měsíci a úroky.

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

Agregace produktů

Agregaci součinu lze získat agregací "exponenciální funkce" a "logaritmické funkce". SQL vypadá takto:

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

Jedná se o formu, která může být realizována povahou "exponenciální funkce" a "logaritmické funkce".

Za prvé, souhrn logaritmické funkce je "log x + log y = log(x * y)" podle vzorce. Exponenciální vzorec "e logx = x**" dává "e log(x*y) = x * y" použitím vzorce získaného součtem logaritmických funkcí. (x * y * ... (Součástí je počet údajů)

Nulová a záporná korespondence

Vzhledem k tomu, že logaritmická funkce nemůže být menší nebo rovna 0, dojde k chybě, pokud agregační cíl obsahuje číslo menší nebo rovné 0. Chcete-li pojmout čísla nižší než 0, použijte SQL následujícím způsobem:

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