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