题解 | 子查询应该这么写#返回每个顾客不同订单的总金额#

返回每个顾客不同订单的总金额

http://www.nowcoder.com/practice/ce313253a81c4947b20e801cd4da7894

select 
cust_id,
(select
 SUM(item_price*quantity)
FROM OrderItems a 
WHERE a.order_num=b.order_num)total_ordered
from Orders b
ORDER BY total_ordered DESC

将聚合的字段放在select后,用where+关联条件关联即可

全部评论
不会只有我一个人没理解吧
9 回复 分享
发布于 2022-08-01 15:00
我感觉可读性有点差呀,我这个应该好理解一点把。 select cust_id, sum(total) total_ordered from Orders inner join ( select order_num, sum(quantity * item_price) total from OrderItems group by order_num ) b1 using (order_num) group by cust_id order by total_ordered desc
8 回复 分享
发布于 2022-08-13 19:41
这个是最经典的correlated subqueries,符合题设,高效,便捷,省电,不需要joins也不需要group。
6 回复 分享
发布于 2022-07-08 05:16
这里的子查询是标量子查询,直接返回一个数值,所以你使不使用group by都不影响输出结果,答主的这种写法是最简便的,也可以使用表联接的方法做出
6 回复 分享
发布于 2022-06-07 14:47
这个题出的有问题啊,订单总数和订单总金额,这是两回事儿
5 回复 分享
发布于 2022-11-27 19:25 广东
每个顾客每个订单,都没看到group by 诶
4 回复 分享
发布于 2022-04-10 14:45
Orders表的cust_id有两个cust1,为啥结果只有一个,是在哪里进行了分组或去重操作嘛,有无大佬解答一下。
2 回复 分享
发布于 2023-10-06 17:23 山东
大佬好,可否解惑两个问题: 1 cust_id 有两个cust1,所以这个不是得group by cust吗? 2 跟在select后面的子查询不是返回单行单列吗?这里为什么能分开显示我实在想不明白 求大佬解惑呀
2 回复 分享
发布于 2022-12-02 11:26 宁夏
(select SUM(item_price*quantity) FROM OrderItems a WHERE a.order_num=b.order_num)子查询括号里面出来的不是全部的和吗,怎么最后的结果变成对应的总数了,有点不理解,望解惑
2 回复 分享
发布于 2022-10-10 16:11 广东
这个题目: 题干上订单金额 和订单总数是一回事儿吗? 这个total_ordered 都指这两个吗?
1 回复 分享
发布于 2022-11-29 01:23 福建
这里网站提供的运行结果有问题,应该会有两个cust_id为1的结果,因为这里没有合并同一个顾客的不同订单
点赞 回复 分享
发布于 04-14 16:54 重庆
确实很妙,大佬就是大佬
点赞 回复 分享
发布于 2024-05-01 20:18 四川
长见识了,好妙的子查询
点赞 回复 分享
发布于 2023-08-20 20:56 湖北
呃呃呃呃呃,大佬,第一次遇到这样是写法,长知识了
点赞 回复 分享
发布于 2023-05-14 16:15 北京
用子查询的方法模拟了链接join,学习了。
点赞 回复 分享
发布于 2023-03-18 02:23 北京
学习了
点赞 回复 分享
发布于 2022-10-25 16:43 山东
没看懂 能解释下吗
点赞 回复 分享
发布于 2022-08-28 17:03 江西
请问一些 total price 可以放在开头然后再后面接customer left join orders吗
点赞 回复 分享
发布于 2022-05-30 16:27

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
184
39
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务