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

Tính toán chi phí trung bình có trọng số vĩnh viễn SQL Server 2008

Nếu tôi hiểu đúng, bạn muốn giá trung bình tích lũy.

Cách tiếp cận này sử dụng truy vấn con để tính tổng số lượng tích lũy và tổng số tiền tích lũy được trả. Tỷ lệ là chi phí trung bình:

select t.*, cumepaid / cumeqty as avg_cost
from (select t.*,
             (select SUM(qty) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumeqty,
             (select SUM(qty*unit_price) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumepaid
      from t
     ) t

Trong SQL Server 2012, bạn có thể thực hiện việc này bằng cách tính trực tiếp tổng tích lũy (sẽ hiệu quả hơn). Bạn cũng có thể làm điều này với cross apply , nhưng tôi thích SQL chuẩn hơn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt của SQL Server (đối diện với giao nhau)

  2. Giám sát cơ sở dữ liệu và phiên bản thông qua Activity Monitor | Khắc phục sự cố hiệu suất máy chủ SQL -2

  3. Visual Studio 2008/2010 &SQL Server 2008 trên Windows 7 Home Premium

  4. SQL Server 2008 Dữ liệu dọc sang ngang

  5. Trả về thông số đầu ra của một thủ tục đã lưu trữ bên trong một thủ tục đã lưu trữ khác