根据实际情况,可以知道顾客和订单号是一对多的关系,那么,同一订单号应当是对应一位顾客ID,故可以先在OrderItems表中按订单号分组用SUM()函数计算出同一订单的总金额:
SELECT order_num, SUM(item_price*quantity) AS total_ordered
FROM OrderItems
GROUP BY order_num
可以根据以上用WITH...AS创建新表total_order_price,然后通过键order_num将其与Orders表相连,完整代码如下:
WITH total_order_price AS (
SELECT order_num, SUM(item_price*quantity) AS total_ordered
FROM OrderItems
GROUP BY order_num
)
SELECT cust_id, total_ordered
FROM Orders
LEFT JOIN
total_order_price
USING(order_num)
ORDER BY total_ordered DESC