在深入了解SQL的聚合函数和分组查询之前,首先需要理解函数和数据类型的基本概念。在SQL中,函数是一组执行特定任务的SQL语句。SQL提供了多种函数,主要分为两类:单行函数和多行函数。单行函数对单行数据进行操作,每行返回一个结果,可以与SELECT、WHERE和ORDER BY子句一起使用。而多行函数则用于多行数据,并返回聚合值,也称为聚合函数或非标量函数。在处理多行数据时,通常使用聚合函数。聚合函数用于执行特定类型的操作,例如计算表中的记录数、查找表中的最大和最小值、计算表中的总和和平均值等。聚合函数在执行计算时会忽略表中的NULL值,除了COUNT()函数外。
聚合函数通常在SELECT语句中使用。SQL提供了多种聚合函数,包括SUM()、AVG()、MAX()、MIN()、COUNT()、FIRST()和LAST()。SUM()、AVG()、MAX()和MIN()这些函数应用于具有整型值的属性,例如员工的薪水、员工的年龄、学生的分数等。
SUM()函数用于计算指定列在一组行中的总和。例如,使用SELECT SUM(Salary) FROM Employee查询可以找出Employee表中所有员工的薪水总和。
SELECT SUM(Salary) FROM Employee;
AVG()函数用于计算指定列在一组行中的平均值。例如,使用SELECT AVG(Salary) FROM Employee查询可以计算Employee表中所有员工的平均工资。
SELECT AVG(Salary) FROM Employee;
MAX()函数用于检索指定列的最大值。例如,使用SELECT MAX(Salary) FROM Employee查询可以找出Employee表中薪水最高的员工。
SELECT MAX(Salary) FROM Employee;
MIN()函数用于检索指定列的最小值。例如,使用SELECT MIN(Salary) FROM Employee查询可以找出Employee表中薪水最低的员工。
SELECT MIN(Salary) FROM Employee;
COUNT()函数返回数据库表中的行数。例如,使用SELECT COUNT(*) FROM Employee查询可以计算Employee表中的总员工数。
SELECT COUNT(*) FROM Employee;
FIRST()函数返回指定列的第一个值。例如,使用SELECT FIRST(Name) FROM Employee查询可以找出Employee表中第一个员工的名字。
SELECT FIRST(Name) FROM Employee;
LAST()函数返回指定列的最后一个值。例如,使用SELECT LAST(Name) FROM Employee查询可以找出Employee表中最后一个员工的名字。
SELECT LAST(Name) FROM Employee;
可以使用GROUP BY子句与聚合函数一起使用,以计算或统计指定表中一组值。因此,聚合函数也被称为GROUP函数。GROUP BY子句是SQL命令,用于将具有相同值的行进行分组。GROUP BY子句在SELECT语句中使用,并且可以与WHERE子句一起使用。WHERE子句在GROUP BY之前使用。为了以特定方式表示一组值,ORDER BY子句也与GROUP BY一起使用,GROUP BY放在ORDER BY之前。
SELECT column_name FROM table_name WHERE [condition] GROUP BY column_name ORDER BY column_name;
例如,使用SELECT DEPARTMENT, SUM(SALARY) FROM EMPLOYEE GROUP BY DEPARTMENT ORDER BY DEPARTMENT查询可以计算每个部门的薪水总和。
SELECT DEPARTMENT, SUM(SALARY) FROM EMPLOYEE GROUP BY DEPARTMENT ORDER BY DEPARTMENT;
SELECT column_1, column_2 FROM table WHERE [conditions] GROUP BY column_1 HAVING [condition] ORDER BY column_1;
SELECT DEPARTMENT, AVG(SALARY) FROM EMPLOYEE GROUP BY DEPARTMENT HAVING AVG(SALARY) > 28000;