【发布时间】:2016-10-01 22:15:26
【问题描述】:
我遇到了问题(是的,这是家庭作业)。问题是:
- 编写一个
SELECT语句,为每个具有这些列的订单的客户返回一行:
Customers 表中的 email_address
订单数量统计
每个订单的总金额(提示:首先,从价格中减去折扣金额。然后,乘以数量。)
仅返回客户有超过 1 个订单的行。 按行项目金额的总和对结果集进行降序排序。 我对这部分的查询有效。它是:
SELECT email_address, COUNT(o.order_id) as number_of_orders, sum((item_price-discount_amount)*quantity) As Total
FROM Customers c JOIN Orders o
ON c.customer_id = o.customer_id
JOIN order_items oi on oi.order_id =o.order_id
GROUP BY email_address
HAVING COUNT (o.order_id) > 1
ORDER BY number_of_orders DESC;`
在那之后,我应该修改那个查询,使它只计算和总计 item_price 值大于 400 的行项目。我似乎无法弄清楚。有人可以指出我正确的方向吗?
顺便说一句,这是我的吉他商店数据库。
【问题讨论】:
-
你的意思是
where oi.item_price > 400?您是否只应该包括具有多个订单匹配的客户?还是仍然是所有客户都有不止一个订单,但仅将这些项目包括在总数中? -
所有有多个订单的客户,但仅限 item_price 大于 400 的商品。
-
你学过案例表达式吗?哪个可以进入
sum(),继续问题中的提示主题... -
我有,但是在这个特定的课程中,我们还没有。我们只应该为此分配使用聚合函数和子查询。