数据库 --分组函数
1,常用分组函数
count()--统计数量,注意空值行null, rownum, rowid
-
-- 统计所有的员工数量
select count(empno) 员工数量
from emp;
select count(*) 员工数量
from emp;
select count(comm) 员工数量
from emp; -
select rownum, rowid, ename
from emp;
avg() --获取平均值函数
-
-- 统计所有员工的平均工资(只统计非空值行的)
select avg(sal) from emp;
select sum(sal)/count(sal) from emp;
-- 统计所有员工的平均工资(有空值)
select avg(nvl(sal,0)) from emp;
avg(sal) => sum(sal)/count(sal)
max() --最大值函数
-
-- 求员工的最高工资是多少
select max(sal) from emp;
min()
-- 求员工的最低工资是多少
select min(sal) from emp;
sum() --求和函数
-- 求所有员工的工资是多少
select sum(sal) from emp;
2,分组函数与空值列
3,group by 子句
--求每个部门的员工的数量
select deptno, count(1)
from emp
group by deptno;
-- select子句中如果有分组函数,就不能再出现普通列,除非该列也是分组函数的列
select deptno, count(1),empno
from emp
group by deptno, empno;
4,having 子句
having:从分组结果中挑选满足条件的数据
having与where的区别:
having-分组后再挑选,where-分组前挑选
--求部门人数超过5人的部门编号和人数
select deptno, count(1)
from emp
group by deptno
having count(1)>5;
--求1985年(含当年)以后入职的,部门人数超过1人的部门编号和人数
-- 入职日期
-- 人数超过5人
select deptno, count(1)
from emp
where hiredate>=to_date('1985-01-01','yyyy-MM-dd')
group by deptno
having count(1)>1;

浙公网安备 33010602011771号