题解 | #返回订单数量总和不小于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 ,这个时候再对购买量求和会求出全局的和。(自我理解,欢迎指正)