数据库 --分组函数

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;

 

posted @ 2021-03-12 09:52  nick-wgh  阅读(494)  评论(0)    收藏  举报