Agregació de productes

Pàgina actualitzada :
Data de creació de la pàgina :

Dades d'exemple

Simplement definir una taula, dades amb només anys, mesos i interessos.

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

Productes agregats

L'agregació del producte es pot obtenir agregant "funció exponencial" i "funció logarítmica". SQL té aquest aspecte:

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

Aquesta és una forma que es pot realitzar per la naturalesa de la "funció exponencial" i la "funció logarítmica".

En primer lloc, el resum de la funció logarítmica és "log x + log y = log(x * y)" per la fórmula. La fórmula exponencial "e logx = x**" dóna "log e(x*y) =x * y" aplicant la fórmula obtinguda per la suma de les funcions logarítmiques. (x * y * ... (La part és el nombre de dades)

Correspondència zero i negativa

Com que una funció logarítmica no pot ser inferior o igual a 0, es produeix un error si l'objectiu d'agregació conté un nombre inferior o igual a 0. Per acomodar els números inferiors a 0, utilitzeu SQL de la manera següent:

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