我有两张桌子,其中一张桌子持有一个项目的初始折扣,另一张桌子除了初始折扣外还有一个店员可以给予的折扣。可以出售任意数量的商品并享受折扣。
我在这里尝试的是按order_id分组并获得折扣的总金额。我没有这个正确的,因为我在购买10.00美元时的价格大约是5美元,而每件商品的折扣价为50%。
我该如何计算?
SUM(price*quantity)*(SUM(a.discount)+b.discount) AS discount
答案 0 :(得分:1)
对于单个订单商品,您有价格,数量,初始折扣(每个订单总有折扣,但可能为零)以及与特定订单商品相关的可选折扣。因此,表是ORDER和ORDER_IITEMS。鉴于折扣存储为分数(0.000 .. 1.000), 您可能需要基于以下计算:
(price * quantity * (initial_discount + optional_discount))
获得单件商品的折扣;你聚集整个表达式。所以,你最终得到的结果是:
SELECT Order_ID, SUM(price * quantity * (initial_discount + optional_discount))
FROM Orders AS O
JOIN Order_Items AS I ON O.Order_ID = I.Order_ID
GROUP BY Order_ID;
将别名应用于SUM中的列名:
SELECT Order_ID, SUM(I.price * I.quantity *
(O.initial_discount + I.optional_discount)) AS discount
FROM Orders AS O
JOIN Order_Items AS I ON O.Order_ID = I.Order_ID
GROUP BY Order_ID;