一、介绍
SQL聚合函数是一组函数,用于计算并返回数据集的单个值。这些函数通常用于在SELECT语句中汇总数据,并执行以下操作:计算平均值(AVG)、计数行数(COUNT)、获取最大/最小值(MAX/MIN)或计算总和(SUM)。因为聚合函数能够通过对数据集进行分组来提供更具体的分析和统计信息,所以它们通常与GROUP BY子句一起使用。
二、基本语法
SELECT 聚合函数(字段列表) FROM 表名;
三、常见的聚合函数
1、count() 函数
COUNT 是 SQL 中的聚合函数之一,用于对查询结果中符合条件的行数进行计数统计。具体使用方式为在 SELECT 语句中指定 COUNT()函数和需要计数的列或值。
例如 :SELECT COUNT(*) FROM table_name; 就是用来统计表 table_name 中所有行数的计数器。
空值null不参与聚合函数的运算!!!
举例来说,在表 `employees` 中,想要统计所有员工的数量,可以通过以下 SQL 查询语句实现:
SELECT COUNT(*) FROM employees;
如果想要统计某个部门的员工数量,可以将其和 `WHERE` 子句进行结合使用:
SELECT COUNT(*) FROM employees WHERE department = 'Sales';
2、AVG()函数
AVG 是 SQL 中的聚合函数之一,用于对查询结果中符合条件的列的值进行平均数的计算。
例如,在表 student 中如果想要计算所有学生的成绩的平均数,可以通过以下 SQL 查询语句实现:
SELECT AVG(grade) FROM student;
同样,如果需要对某个班级的成绩进行平均数的计算,可以将其与 where 子句进行结合使用:
SELECT AVG(grade) FROM student WHERE class = 'Class 1';
需要注意的是,AVG 函数会动排除值为 NULL的行,如果想要包含这些行,并将其为 0 进行计算,可以使用 IFNULL 函数或者 COALESCE 函数来判和替换 NULL值:
如果有以下表格sales:SELECT AVG(IFNULL(grade, 0)) FROM student; -- 或者: SELECT AVG(COALESCE(grade, 0)) FROM student;
如果想要计算所有产品的平均销售额,可以使用以下 SQL 查询语句:
id product sales 1 A 50 2 A 60 3 B 70 4 B NULL SELECT AVG(sales) FROM sales;
这会排除掉值为 NULL 的行,因此结果为(50+60+70)/3=60 。如果想要包含值为 NULL 的行并将其视为 0 进行计算,可以使用以下 SQL 查询语句:
SELECT AVG(IFNULL(sales, 0)) FROM sales; -- 或者: SELECT AVG(COALESCE(sales, 0)) FROM sales;
这样得到的结果为 (50+60+70+0)/4=45 。
3、MAX()函数
MAX 是 SQL 中的聚合函数之一,用于对查询结果中符合条件的列的值进行最大值的计算。
例如,在表 student 中如果想要找到所有学生的成绩的最高分数,可以通过以下 SQL 查询语句实现:
SELECT MAX(grade) FROM student;
同样,如果需要找到某个班级中成绩最高的学生的信息,可以将其与 where 子句进行结合使用:
SELECT MAX(grade) FROM student WHERE class = 'Class 1';
需要注意的是,MAX 函数会动排除值为 NULL的行,如果想要包含这些行,并将其为 0 ,可以使用 IFNULL 函数或者 COALESCE 函数来判和替换 NULL值:
SELECT MAX(IFNULL(grade, 0)) FROM student; -- 或者: SELECT MAX(COALESCE(grade, 0)) FROM student;
如果有以下表格sales:
id product sales 1 A 50 2 A 60 3 B 70 4 B NULL 如果想要找到所有产品中的最高销售额,可以使用以下 SQL 查询语句:
SELECT MAX(sales) FROM sales;
这会排除掉值为 NULL 的行,这会排除掉值为 NULL 的行,因此结果为 70 。
4、MIN()函数
MIN 是 SQL 中的聚合函数之一,用于对查询结果中符合条件的列的值进行最小值的计算。
例如,在表 student 中如果想要找到所有学生的成绩的最低分数,可以通过以下 SQL 查询语句实现:
SELECT MIN(grade) FROM student;
同样,如果需要找到某个班级中成绩最低的学生的信息,可以将其与 where 子句进行结合使用:
SELECT MIN(grade) FROM student WHERE class = 'Class 1';
需要注意的是,MIN 函数会动排除值为 NULL的行,如果想要包含这些行,并将其为 0 ,可以使用 IFNULL 函数或者 COALESCE 函数来判和替换 NULL值:
SELECT MIN(IFNULL(grade, 0)) FROM student; -- 或者: SELECT MIN(COALESCE(grade, 0)) FROM student;
如果有以下表格sales:
id product sales 1 A 50 2 A 60 3 B 70 4 B NULL 如果想要找到所有产品中的最高销售额,可以使用以下 SQL 查询语句:
SELECT MIN(sales) FROM sales;
这会排除掉值为 NULL 的行,因此结果为 50 。如果想要包含值为 NULL 的行并将其视为 0 进行计算,可以使用以下 SQL 查询语句:
SELECT AVG(IFNULL(sales, 0)) FROM sales; -- 或者: SELECT AVG(COALESCE(sales, 0)) FROM sales;
这样得到的结果为 0 。
5、SUM()函数
在SQL中,SUN 是一种聚合函数,它用于计算一组数值的总和,并返回结果, Sum 可以用于所有数值类型的列,包括整型、浮点型和货币型。
例如,如果有一个名为 orders 的表格,其中包含以下数据:
现在需要计算所有订单的总金额,则可以使用以下语句:
order_id customer_id order_total 1 100 150.50 2 101 75.25 3 102 200.00 4 103 50.00 SELECT SUM(order_total) FROM orders;
这将返回 475.75,表示所有订单总额的总和。