如何在数据表中进行加权求和

本文关键字:加权 求和 数据表 | 更新日期: 2023-09-27 18:23:42

我有一个这样的数据表:

Date     Qty    Price 
----------------------
12/07    10      2
12/09    20      3
12/05    12      2
12/05    8       6
8/9      85      56

如果我们有两行日期相同,我想计算这两列的加权价格。因此数据表变成:

Date     Qty         Price 
----------------------------
12/07    10          2
12/09    20          3
12/05    20 (12+8)   3.6 (12*2 + 8*6)/(12+8)
8/9      85          56

如何在数据表中进行加权求和

SELECT Date, SUM(Qty), SUM(QtyPrice)/SUM(Qty)
FROM
(
  SELECT Date, Qty, Qty * Price AS QtyPrice
  FROM Table
)
GROUP BY Date

应该这样做

在C#中:

var groups = table.AsEnumerable().
                   GroupBy(row => row.Field<DateTime>("Date")).
                   Select(group => new 
                   { 
                     Date = group.Key, 
                     Quantity = group.Sum(item => item.Qty),
                     Price = group.Sum(item => item.Qty * item.Price)
                   });