제품 집계

페이지 업데이트 :
페이지 생성 날짜 :

샘플 데이터

단순히 테이블, 연도, 개월 및 관심이있는 데이터를 정의하십시오.

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

제품 집계

제품의 집계는 "지수 함수"와 "로그 함수"를 집계하여 얻을 수 있습니다. SQL은 다음과 같습니다.

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

이것은 "지수 함수"와 "로그 함수"의 특성으로 실현 될 수있는 형태입니다.

먼저, 로그 함수의 요약은 수식에 의해 "log x + log y = log(x * y)"입니다. 지수 수식 "e logx = x**"는 로그 함수의 합으로 얻은 수식을 적용하여 "e log(x*y) =x * y"를 제공합니다. (x * y * ... (의 부분은 데이터의 수입니다)

제로 및 네거티브 대응

로그 함수는 0보다 작거나 같을 수 없으므로 집계 대상에 0보다 작거나 같은 숫자가 포함된 경우 오류가 발생합니다. 0 미만의 숫자를 수용하려면 다음과 같이 SQL을 사용합니다.

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