题解 | #返回订单数量总和不小于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

需要注意的是where 和 having 的使用场景:

where 是针对字段进行的筛选

having 是针对分组的筛选

具体的对比,from gpt

SQL 中having和where的主要区别有:

  1. 执行时间不同

where在分组group by之前进行过滤,having在group by之后进行过滤。

  1. 作用对象不同

where对原始表进行筛选,影响从表中选取数据的行。

having对group by的结果进行筛选,影响最终结果集的行。

  1. 使用条件不同

where后面可以使用表中的所有列,常用于不聚合的字段。

having只可使用group by生成的组字段或聚合函数,常用于聚合字段。

  1. 适用场景不同
  • 如果需要在分组统计之前过滤记录,则需要where。
  • 如果需要在分组统计之后基于聚合函数过滤,则需要having。
  • 如果同时需要两者,则where写在前,having写在后。

一个简单的例子:

sqlCopy codeSELECT class, COUNT(student) 
FROM table
WHERE score > 80 
GROUP BY class
HAVING COUNT(student) > 5

这可以查找总分大于80的学生人数超过5人的班级。

总之,where和having都用于过滤,但适用范围和使用时间不同。where先行过滤行,having后置过滤分组。

全部评论

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务