分组函数与分组统计
分组函数又称为聚集函数,用于对一组数据进行统计计算,返回单一结果,而不是逐行返回。常见的分组函数有:AVG
(平均值)、MIN
(最小值)、MAX
(最大值)、SUM
(求和)和COUNT
(计数)等。
1. AVG函数
AVG
函数用于计算指定列的平均值,它会自动忽略空值。如果需要去掉重复值的计算,可以使用DISTINCT
关键字。例如,计算部门30员工的平均工资:
SELECT avg(sal), avg(DISTINCT sal) FROM emp WHERE deptno=30; -- 代码编号 [000275]
- 结果:返回两个平均值,第二个平均值计算时去除了重复的工资值。
2. MIN与MAX函数
MIN
函数用于求指定列的最小值,MAX
函数用于求最大值。这两个函数都自动忽略空值。例如,获取部门30员工的最低工资和最高工资:
SELECT min(DISTINCT sal), max(sal) FROM emp WHERE deptno=30; -- 代码编号 [000276]
- 结果:显示部门30中最低和最高的工资。
3. COUNT函数
COUNT
函数用于统计某列数据的行数,默认情况下不计算空值。要统计非重复值时,可在列名前加DISTINCT
。例如,计算公司中发放工资的员工人数:
SELECT count(sal), count(DISTINCT sal) FROM emp; -- 代码编号 [000277]
- 结果:返回两个值,第一个是工资的总行数,第二个是不同工资的行数。
4. SUM函数
SUM
函数用于计算指定列的和。它也会自动忽略空值。如果要去掉重复值,可以使用DISTINCT
关键字。例如,计算部门30员工工资总和:
SELECT sum(sal) FROM emp WHERE deptno=30; -- 代码编号 [000278]
- 结果:显示部门30中所有员工工资的总和。
5. 综合使用分组函数
可以将多个分组函数结合使用,构造一个复杂的查询。例如,获取部门30的员工平均工资、最高工资、最低工资、工资总和及总人数:
SELECT avg(sal) AS 平均工资, min(sal) AS 最低工资, max(sal) AS 最高工资, sum(sal) AS 工资总和
FROM emp WHERE deptno=30; -- 代码编号 [000279]
- 结果:返回部门30的统计信息,包括平均工资、最低工资、最高工资和工资总和。
6. 分组统计(GROUP BY)
分组统计通常与GROUP BY
子句一起使用,用于对数据进行分组统计。首先按指定列分组,再对分组数据进行聚集运算。例如,按部门统计每个部门的平均工资、最高工资、最低工资、工资总和及总人数:
SELECT deptno AS 部门号, avg(sal) AS 平均工资, min(sal) AS 最低工资, max(sal) AS 最高工资, sum(sal) AS 工资总和
FROM emp GROUP BY deptno; -- 代码编号 [000280]
- 结果:显示各部门的统计信息。
7. HAVING子句
HAVING
子句用于在分组统计后进行过滤。例如,统计工资总和大于7000的部门,且最低工资在900元以上:
SELECT deptno AS 部门号, avg(sal) AS 平均工资, min(sal) AS 最低工资, max(sal) AS 最高工资, sum(sal) AS 工资总和
FROM emp GROUP BY deptno HAVING min(sal)>900 AND sum(sal)>7000; -- 代码编号 [000281]
- 结果:只显示符合条件的部门统计信息。
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
提供丰富的学习资源和实践经验,让你快速掌握AI技能;提供最新的行业动态和应用案例,帮助你在AI领域脱颖而出。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。