ROUND
の組み合わせを使用する 、 EXP
, SUM
および ログ
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
SQL フィドル:http://sqlfiddle.com/#!3/d43c8/2/ 0
説明
ログ
col a ex の対数を返します。 LOG([Col A])
戻る
0
0.6931471805599453
1.0986122886681098
1.3862943611198906
次に SUM
を使用します それらをすべて一緒に追加するには SUM(LOG([Col A]))
戻る
3.1780538303479453
次に、その結果の指数が EXP(SUM(LOG(['3.1780538303479453']))
を使用して計算されます 戻る
23.999999999999993
次に、これは最終的に ROUND
を使用して丸められます ROUND(EXP(SUM(LOG('23.999999999999993'))),1)コード>
24
を取得する
追加回答
簡単な解決方法:
0
の場合 あなたのデータで
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
WHERE [Col A] != 0
0
しかない場合 次に、上記の結果は NULL
になります .
SELECT (ROUND(exp(SUM(log(CASE WHEN[Col A]<0 THEN [Col A]*-1 ELSE [Col A] END))),1)) *
(CASE (SUM(CASE WHEN [Col A] < 0 THEN 1 ELSE 0 END) %2) WHEN 1 THEN -1 WHEN 0 THEN 1 END) AS [Col A Multi]
FROM yourtable
入力例:
1
2
3
-4
出力:
Col A Multi
-24
SQL フィドル:http://sqlfiddle.com/#!3/01ddc/3/ 0