当一行中可能有多个值时求平均值 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
我想尝试根据单价和数量平均订单。每个订单的单价不同,但产品可以相同。
因此,我正在尝试执行类似于以下示例的操作。
假设我有这个数据集:
╔═════════╦═════════════╦═══════════╦══════════╗
║ 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