Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách Nhân tất cả các giá trị trong một cột với SQL như SUM ()

Sử dụng kết hợp ROUND , EXP , SUMLOG

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để phát hiện và ràng buộc các thay đổi giữa các giá trị hàng trong bảng SQL?

  2. TSQL - tạo một proc được lưu trữ bên trong một báo cáo giao dịch

  3. Tạo mặt nạ dữ liệu động trong SQL Server cho người mới bắt đầu

  4. Cách đặt thứ hai là ngày đầu tuần trong SQL Server

  5. Sự khác biệt giữa bảng DELETE và TRUNCATE trong SQL Server