Как сделать сумму, взвешенную в таблице данных? - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть такая таблица данных:

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

Если у нас есть 2 строки с одинаковой датой, я хочу рассчитать взвешенную цену для обоих столбцов. Таким образом, дата становится:

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

1 Ответ

2 голосов
/ 08 февраля 2012
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)
                   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...