SQL开发知识:浅析SQL中的group by 和 having 用法

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中用于分组和筛选分组结果的重要语句。在使用时需要注意分组的列和聚合函数的选择,以及筛选条件的合理设置。

数据库标签