当一行中可能有多个值时求平均值 SQL

Averaging In SQL When Multiples Values Possible In A Row

我想尝试根据单价和数量平均订单。每个订单的单价不同,但产品可以相同。

因此,我正在尝试执行类似于以下示例的操作。

假设我有这个数据集:

╔═════════╦═════════════╦═══════════╦══════════╗
║ OrderID ║ ProductName ║ UnitPrice ║ Quantity ║
╠═════════╬═════════════╬═══════════╬══════════╣
║       1 ║ Apple       ║ 10.00     ║       10 ║
║       2 ║ Apple       ║ 15.00     ║        5 ║
║       3 ║ Orange      ║ 10.00     ║        2 ║
║       4 ║ Orange      ║ 11        ║        5 ║
╚═════════╩═════════════╩═══════════╩══════════╝

而我想做的是根据数量平均单价。

所以我想要的结果是:

╔═════════════╦════════════════════╦═══════╗
║ ProductName ║ Average Unit Price ║ Count ║
╠═════════════╬════════════════════╬═══════╣
║ Apple       ║ 11.67              ║    15 ║
║ Orange      ║ 10.71              ║     7 ║
╚═════════════╩════════════════════╩═══════╝

可以在Fiddle

看到数据集

我该怎么做?

select productname, 
       sum(unitprice * quantity) / sum(quantity) as avg_unit_price, 
       sum(quantity) as cnt
from your_table
group by productname

SQLFiddle demo