简单
技术面试0 次浏览

简述 SQL 中 GROUP BY 和 HAVING 的区别。

数据分析师
SQL数据分组

答题要点

在 SQL 中,`GROUP BY` 和 `HAVING` 是用于数据分组和筛选的重要子句,它们有不同的作用。`GROUP BY` 子句用于将表中的数据按照一个或多个列进行分组,将具有相同值的行归为一组。通常与聚合函数(如 `SUM`、`AVG`、`COUNT` 等)一起使用,以对每个分组进行统计计算。例如,`SELECT department, COUNT(*) FROM employees GROUP BY department;` 会按照部门对员工进行分组,并统计每个部门的员工数量。而 `HAVING` 子句用于在分组后对分组结果进行筛选,它只能与 `GROUP BY` 子句一起使用。`HAVING` 后面可以跟聚合函数的条件,只有满足条件的分组才会出现在结果集中。例如,`SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;` 会筛选出员工数量超过 10 的部门。简而言之,`GROUP BY` 是分组操作,`HAVING` 是对分组结果的筛选。