我对这个问题着迷。这是我的完整 sqlite 查询的精简版本:
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
我想返回一个名为total price
的新列。这将是 UnitPrice
乘以 Quantity
减去相应的百分比 Discount
。然而,复杂性出现了,因为新列应按 OrderID
分组,以表示总订单价格减去个别折扣百分比。
几个小时以来,我一直在追逐 SUM
聚合和 GROUP BY
。将 UnitPrices 和 Quantities 相加很好,但由于折扣适用于不同的值,因此几乎需要先计算折扣。顺便说一句,折扣不需要单独应用于每件商品。
最佳答案
这是假设您使用 MySQL。 MS SQL 服务器可能需要略有不同,但两者的想法是相同的。
为了更好地理解这一点,将其分为两个阶段。
首先统计订单项价格:
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;
关于mysql - SQL - 如何在单行计算后对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32529678/