oracle 分组查询

Posted 唐僧还在拜佛求经路。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 分组查询相关的知识,希望对你有一定的参考价值。

 常用的函数:
            ·:统计个数:COUNT(),根据表中的实际数据量返回结果;
            ·:求和:SUM(),是针对于数字的统计,求和
            ·:平均值:AVG(),各种数据类型都支持
            ·:最大值:MAX(),各种数据类型都支持
            ·:最小值:MIN(),求出最小值
      范例:验证各个函数:
            select count(*) 人数,AVG(sal)员工平均工资,SUM(sal)每月总支出,
             max(sal) 最高工资,min(sal)最低工资
             from scott.emp;
      范例:统计出公司的平均雇用年限
            select  avg(months_between(sysdate,hiredate)/12) from scott.emp;
      范例:求出最早和最晚的雇佣日期
            select max(hiredate)最晚,min(hiredate)最早 from scott.emp;
      以上的几个操作函数,在表中没有数据的时候,只有CIUNT()函数会返回结果,其他都是NULL;
      范例:统计bonus表
            select count(*) 人数,AVG(sal)员工平均工资,SUM(sal)每月总支出,
             max(sal) 最高工资,min(sal)最低工资
             from bonus;
      实际上针对于count()函数有三种使用形式;
            ·count(*):可以准确的说返回表中的全部记录数;
            ·count(字段):统计不为null的所有数据量;
            ·connt(DISTINCT 字段);消除重复之后的结果;
      范例:统计查询一
            select count(*),count(empno),count(comm) from scott.emp;
            统计查询二:
            select count (DISTINCT job) from scott.emp;
  5-2:分组统计
      范例:根据部门编号分组、查询出每个部门的编号、人数、平均工资。
            select count(deptno) 编号,count(*),Avg(sal)
              from scott.emp
              group by deptno;
      范例:根据职位分组,统计出每个职位的人数,最低工资与最高工资。
            select job,count(*),min(sal),MAX(sal)
              from scott.emp
              group by job;
  5-3:多表查询与分组统计
      范例:查询出每个部门的名称、部门人数、平均工资。
        确定要使用的数据表
            dept表:部门名称
            emp表:统计数据
        确定已知的关联字段
            雇员与部门:scott.emp.deptno=scott.dept.deptno
      第一步:换个思路,查询出每个部门的名称,雇员编号(count(empno))、基本工资(AVG(sal))
              select d.ename,e.empno,e.sal
                from scott.emp e,scott.emp d
                 where e.deptno=d.deptno;
      第二步:
              select d.ename,count(e.empno),AVG(e.sal)
                 from scott.emp e,scott.emp d
                   where e.deptno=d.deptno
                   group by d.dname;
      第三部:外连接
              select d.dname,count(e.empno),AVG(e.sal)
                   from scott.emp e,scott.emp d
                     where e.deptno(+)=d.deptno
                     group by d.ename;
    范例:查询每个部门的编号、名称、位置、部门人数、平均工资;
          确定要使用的数据表
            dept表:编号、名称、位置
            emp表:统计信息
           确定已知的关联字段
              雇员与部门:scott.emp.deptno=scott.dept.deptno
                select d.deptno,d.dname,d.loc,e.empno,e.sal
                from scott.emp e, scott.dept d
                where e.deptno(+)=d.deptno;
          第二步:此时发现有三个列(dept表)同事发生着重复,呢么就可以进行多字段分组。
                select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)
                from scott.emp e, scott.dept d
                where e.deptno(+)=d.deptno
                group by d.deptno,d.dname,d.loc;







































































以上是关于oracle 分组查询的主要内容,如果未能解决你的问题,请参考以下文章

oracle分组查询

oracle分组查询

Oracle查询语句怎么样按天分组

Oracle的查询-分组查询

Oracle 查询按类型分组

Oracle_group by分组查询_深入