Sử dụng kết hợp ROUND
, EXP
, SUM
và LOG
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
SQL Fiddle: http://sqlfiddle.com/#!3/d43c8/2/ 0
Giải thích
LOG
trả về lôgarit của col a ex. LOG([Col A])
trả về
0
0.6931471805599453
1.0986122886681098
1.3862943611198906
Sau đó, bạn sử dụng SUM
để Thêm tất cả chúng lại với nhau SUM(LOG([Col A]))
trả về
3.1780538303479453
Sau đó, hàm mũ của kết quả đó được tính bằng EXP(SUM(LOG(['3.1780538303479453'])))
trả về
23.999999999999993
Sau đó, điều này cuối cùng được làm tròn bằng cách sử dụng ROUND
ROUND(EXP(SUM(LOG('23.999999999999993'))),1)
để lấy 24
Các câu trả lời bổ sung
Giải pháp đơn giản để:
Khi bạn có 0
trong dữ liệu của bạn
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
WHERE [Col A] != 0
Nếu bạn chỉ có 0
Sau đó, ở trên sẽ cho kết quả là 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
Đầu vào mẫu:
1
2
3
-4
Đầu ra:
Col A Multi
-24
SQL Fiddle: http://sqlfiddle.com/#!3/01ddc/3/ 0