题解 | #返回订单数量总和不小于100的所有订单的订单号#

返回订单数量总和不小于100的所有订单的订单号

https://www.nowcoder.com/practice/ff77e82b59544a15987324e19488aafd

select order_num
from OrderItems
group by order_num
having sum(quantity)>=100
order by order_num

 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用.

所以,这里将having的作用理解为和where一样都是是筛选,一个是分组前筛选,一个是分组后筛选。

分组前后的区别

聚合函数和group by 往往在一起使用,通过做题发现,不论是将聚合函数放在select语句中,还是放在having语句中,这两种语句都是在group by 之后执行的,而聚合函数这个时候会求局部值。

例如:

使用sum聚合函数,求每个用户的购买量,那么先对用户进行group by分组,使用sum聚合函数对购买量求和,这个时候分别是每个用户的购买量之和,而如果不对用户group by ,这个时候再对购买量求和会求出全局的和。(自我理解,欢迎指正)

全部评论

相关推荐

01-07 15:50
四川大学 Java
看日出看日落:好好背八股,做算法。我身边跟你bg差不多的基本都大厂暑期
点赞 评论 收藏
分享
01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务