题解 | #返回顾客名称和相关订单号以及每个订单的总价#

返回顾客名称和相关订单号以及每个订单的总价

https://www.nowcoder.com/practice/4dda66e385c443d8a11570a70807d250

只group by一个变量会报错的原因:

对order_num分组后,联表结果会折叠显示,比如原本同一订单可能对应两个或以上顾客,折叠后只显示其中一个客户信息。

这时使用聚合函数计算OrderTotal,若只select订单信息及OrderTotal不会报错。但若要同时select对应客户信息,由于某个订单及OrderTotal对应的可能是多个客户,结果又不能显示多条客户信息,而只能显示折叠后的客户信息,这与select要求冲突,故报错。

本题中即使订单信息和客户信息都是一对一的,但为避免以上情况出现,sql将程序设置为仍会报错。

select c.cust_name, oi.order_num,
    sum(oi.quantity*oi.item_price) OrderTotal
from Customers c
inner join Orders o on c.cust_id=o.cust_id
inner join OrderItems oi on o.order_num=oi.order_num
group by c.cust_name,oi.order_num
order by c.cust_name asc, oi.order_num asc
select c.cust_name, oi.order_num,
    sum(oi.quantity*oi.item_price) OrderTotal
from Customers c, Orders o, OrderItems oi
where c.cust_id=o.cust_id and o.order_num=oi.order_num
group by c.cust_name,oi.order_num
order by c.cust_name asc, oi.order_num asc

全部评论

相关推荐

Beeee0927:正确的建议
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务