题解 | #返回顾客名称和相关订单号以及每个订单的总价#
返回顾客名称和相关订单号以及每个订单的总价
https://www.nowcoder.com/practice/4dda66e385c443d8a11570a70807d250
select c.cust_name,o.order_num,sum(OI.quantity*OI.item_price) OrderTatal from Customers c left join Orders o on c.cust_id=o.cust_id join OrderItems OI on o.order_num=OI.order_num group by c.cust_name,o.order_num order by c.cust_name,o.order_num;
在需要同时返回顾客名称和订单号时,需要考虑一个用户有多个订单的情况。
解决方案:
group by c.cust_name,o.order_num用两个字段进行分组,主要排除当一个用户有多个订单的情况,先按用户姓名分组,当用户名相同时,就按订单号来分组计算,即
假设顾客姓名 订单号 订单单价 订单数量
a 001 1 12
a 002 2 20
b 003 3 30
c 004 4 16
使用group by c.cust_name,o.order_num之后,结果应当是
假设顾客姓名 订单号 订单总价
a 001 12
a 002 40
b 003 90
c 004 64
查看26道真题和解析