数据分组统计必备指南:Oracle分组函数

在这里插入图片描述

分组函数与分组统计

分组函数又称为聚集函数,用于对一组数据进行统计计算,返回单一结果,而不是逐行返回。常见的分组函数有: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领域脱颖而出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周同学的技术栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值