Produtos agregados

Página atualizada :
Data de criação de página :

Dados amostrais

Basta definir uma tabela, dados com apenas anos, meses e juros.

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

Produtos agregados

A agregação do produto pode ser obtida agregando "função exponencial" e "função logarítmica". SQL se parece com isso:

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

Esta é uma forma que pode ser realizada pela natureza da "função exponencial" e da "função logarítmica".

Primeiro, o resumo da função logarítmica é "log x + log y = log(x * y)" pela fórmula. A fórmula exponencial "e logx = x**" dá "e log(x*y) =x * y" aplicando a fórmula obtida pela soma das funções logarítmicas. (x * y * ... (A parte é o número de dados)

Correspondência zero e negativa

Como uma função logarítmica não pode ser menor ou igual a 0, ocorre um erro se o alvo de agregação contiver um número menor ou igual a 0. Para acomodar números abaixo de 0, use SQL da seguinte forma:

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