2 Stimmen

Wie kann man eine gewichtete Summe in einer Datentabelle erstellen?

Ich habe eine Datentabelle wie diese:

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

Wenn wir 2 Zeilen mit demselben Datum haben, möchte ich den gewichteten Preis für beide Spalten berechnen. Die Datentabelle wird also :

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

2voto

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

Sollte es tun

In 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)
                   });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X