SQL 面试题 目录

SQL 中 GROUP BY 和 HAVING 的区别是什么?

推荐答案

GROUP BY 用于将结果集按一个或多个列进行分组,通常与聚合函数(如 COUNTSUMAVG 等)一起使用。HAVING 则用于过滤分组后的结果集,类似于 WHERE 子句,但 HAVING 是在分组后对聚合结果进行过滤。

本题详细解读

GROUP BY 的作用

  • GROUP BY 子句用于将查询结果按指定的列进行分组。
  • 通常与聚合函数(如 COUNTSUMAVGMAXMIN 等)一起使用,以便对每个分组进行计算。
  • 例如,以下 SQL 查询按 department 列分组,并计算每个部门的员工数量:

HAVING 的作用

  • HAVING 子句用于过滤分组后的结果集。
  • WHERE 子句不同,HAVING 是在分组后对聚合结果进行过滤。
  • 例如,以下 SQL 查询按 department 列分组,并筛选出员工数量大于 10 的部门:

区别总结

  • GROUP BY 用于分组,HAVING 用于过滤分组后的结果。
  • WHERE 子句在分组前过滤数据,而 HAVING 子句在分组后过滤数据。
  • HAVING 通常与聚合函数一起使用,而 WHERE 不能直接用于聚合函数。

示例对比

  • 使用 WHERE 过滤:

    这里 WHERE 在分组前过滤掉工资低于 50000 的员工。

  • 使用 HAVING 过滤:

    这里 HAVING 在分组后过滤掉员工数量少于 10 的部门。

纠错
反馈