当多个值连续出现时,在SQL中求平均值

时间:2015-03-25 19:09:48

标签: sql ms-access aggregate-functions average

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

所以,我正在尝试做类似于以下示例的事情。

说我有这个数据集:

╔═════════╦═════════════╦═══════════╦══════════╗
║ 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

处查看数据集

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

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

SQLFiddle demo