1. 什么是group by和having?
在SQL中,group by是一种用于将行分组的查询语句。它可以根据某些列对数据进行分组,然后对每个分组进行聚合函数计算。而having子句用于对分组后的结果进行筛选,可以限制满足特定条件的分组结果。
2. group by用法
2.1 group by基本语法
SELECT column1, column2, …, function(column)
FROM table_name
GROUP BY column1, column2, …;
以上是group by查询语句的基本语法,其中column1、column2等是用于分组的列,function(column)是对数据进行聚合计算的函数。
2.2 group by示例
例如,我们要统计某个公司各个部门的工资总和,可以使用group by语句:
SELECT department_name, SUM(salary)
FROM employees
GROUP BY department_name;
以上语句会将employees表中的数据按照department_name列分组,然后对每个分组计算salary总和。
3. having用法
3.1 having基本语法
SELECT column1, column2, …, function(column)
FROM table_name
GROUP BY column1, column2, …
HAVING condition;
以上是having查询语句的基本语法,其中condition是用于筛选分组结果的条件,可以使用聚合函数。
3.2 having示例
例如,在上面的例子中,我们要筛选出工资总和大于100000的部门,可以使用having子句:
SELECT department_name, SUM(salary)
FROM employees
GROUP BY department_name
HAVING SUM(salary) > 100000;
以上语句会先按照department_name列分组,然后对每个分组计算salary总和,最后筛选出工资总和大于100000的部门。
4. 总结
group by和having是SQL中用于分组和筛选分组结果的重要语句。在使用时需要注意分组的列和聚合函数的选择,以及筛选条件的合理设置。