我正在处理的作业的一个查询是:“创建一个计算购买总金额的查询,并显示与每个订单的购买相关的客户ID和客户名称。”我创建了分配所需的所有表,并完成了前2个查询没问题。但是对于第三个查询,我能够计算每个购买的总数,但是当我在价格前面使用SUM
时,无法让它给出订单中每个购买的总数计算它给了我“不是单组组功能”或当我尝试使用GROUP BY
时它说“不是GROUP BY
函数”。
我使用了此代码:
SELECT (i.ItemPrice * t.ItemQty) AS Purchase_Total, o.OrderID, c.CustomerID, c.CustomerName
FROM pillmanb1_Orders o, pillmanb1_Items i, pillmanb1_Transactions t, pillmanb1_Customers c
WHERE o.CustomerID = c.CustomerID
AND i.ItemID = t.ItemID
AND o.OrderID = t.OrderID;
得到这个答案:
但我真正需要的是:
我知道这对你们来说可能很容易,但我很感激帮助!! 谢谢!
答案 0 :(得分:0)
您可以使用analytic functions来实现此目标
获得总计:
sum(i.ItemPrice * t.ItemQty) over () as Grand_Purchase_Total
按订单获取小计:
sum(i.ItemPrice * t.ItemQty) over (partition by o.OrderID) as Grand_Order_Total
SELECT distinct (i.ItemPrice * t.ItemQty) AS Purchase_Total
, sum(i.ItemPrice * t.ItemQty) over () as Grand_Purchase_Total
, sum(i.ItemPrice * t.ItemQty) over (partition by o.OrderID) as Grand_Order_Total
, o.OrderID, c.CustomerID, c.CustomerName
FROM pillmanb1_Orders o
, pillmanb1_Items i
, pillmanb1_Transactions t
, pillmanb1_Customers c
WHERE o.CustomerID = c.CustomerID
AND i.ItemID = t.ItemID
AND o.OrderID = t.OrderID;