SELECT OrderID,
UnitPrice,
Quantity,
discount
FROM Order Details;
哪个返回:
OrderID UnitPrice Quantity discount
10248 14.0 12 0.00
10248 9.8 10 0.00
10248 34.8 5 0.00
10249 18.6 9 0.00
10249 42.4 40 0.00
10250 7.7 10 0.00
10250 42.4 35 0.15
10250 16.8 15 0.15
10251 16.8 6 0.05
10251 15.6 15 0.05
我想返回一个称为总价的新列.这是单价乘以数量减去相应折扣百分比的计算.然而,由于将新列按OrderID分组,因此产生了复杂性,以代表总订单价格减去单个折扣百分比.
数小时来,我一直在追逐SUM聚合和GROUP BY.将单价和数量加总即可,但是由于折扣适用于不同的值,因此几乎就像首先需要计算折扣一样.折扣不必单独应用于每个项目.
解决方法:
这是假设您使用MysqL. MS sql Server可能需要稍作改动,但是两者的想法是相同的.
为了更好地理解这一点,请将其分为两个阶段.
首先计算订单项价格:
SELECT OrderID,
UnitPrice,
Quantity,
discount,
UnitPrice*Quantity*(1-discount) total
FROM OrderDetails;
然后将GROUP BY与SUM()一起应用,因此您的最终查询将是:
SELECT OrderID,
SUM(UnitPrice*Quantity*(1-discount)) total
FROM OrderDetails
GROUP BY OrderID;