oracle教程之Oracle的分组函数与数据分组详解及举例
程序员文章站
2022-08-31 23:03:44
oracle的分组函数
--求平均值avg
select avg(sal) from emp;
--求和sum
select sum(sal) from emp;
--求最大值...
oracle的分组函数
--求平均值avg select avg(sal) from emp; --求和sum select sum(sal) from emp; --求最大值max select max(sal) from emp; --求最小值min select min(sal) from emp; --计数函数count select count(*) from emp; select count(empno) from emp; --统计一下部门的个数 select count(deptno) from emp; --在分组函数中通过distinct关键字来去除重复的记录 select count(distinct deptno) from emp; --行转列wm_concat select wm_concat(ename) from emp; --求员工的平均工资 select sum(sal)/count(*) 方法一, sum(sal)/count(sal) 方法二, avg(sal) 方法三 from emp; --求员工的平均补助 select sum(comm)/count(*) 方法一, sum(comm)/count(comm) 方法二, avg(comm) 方法三 from emp; select count(*),count(nvl(comm,0)) from emp; select comm from emp; --不忽略空值 select avg(nvl(comm,0)) from emp; --忽略空值 select avg(comm) from emp;
oracle的数据分组—groupby
--求出每个部门的平均工资,要求显示:部门号,部门的平均工资 select deptno,avg(sal) from emp group by deptno; --多列分组 --按不同的部门,不同的职位,计算员工的平均工资 select deptno,job,avg(sal) from emp group by deptno,job order by deptno; --求出每个部门的平均工资,要求显示:每个部门的平均工资。 select avg(sal)from emp group by deptno; --求出每个部门的员工姓名,要求显示:部门编号、员工姓名 select deptno,wm_concat(ename)from emp group by deptno;
oracle的数据分组-having
--求平均工资大于2500的部门,要求显示:部门号,平均工资 --select deptno,avg(sal) from emp where avg(sal)>2500 group by deptno; --如果条件中包含分组函数,需要通过having子句对分组结果进行过滤 select deptno,avg(sal) from emp group by deptno having avg(sal)>2500; --在条件中如果没有分组函数,推荐使用where子句,可以先过滤后分组来提高效率 select deptno,avg(sal) from emp where deptno=10 group by deptno; --求部门平均工资的最大值 --嵌套分组函数要与group by子句一起使用 select max(avg(sal)) from emp group by deptno;
下一篇: “邲之战”失败的原因是什么?有什么影响?