zoukankan      html  css  js  c++  java
  • Oracle分组查询

    关键字:  group by (分组) 和 having (过滤)

    --统计每个部门的人数
    -- group by 用于分组查询,后面跟分组参照字段
    --分组查询以后,多行函数功能是统计每组的数据
    select * from emp;
    select count(*) from emp group by deptno;
    select deptno, count(*) from emp group by deptno;
    
    --统计每个部门人数,总工资,最高工资,最低工资,平均工资
    select deptno,count(*),sum(sal),max(sal),min(sal),avg(*) from emp group by deptno order by deptno desc;
    --注意:其中order by deptno desc 是按照部门的降序排列。
    
    --统计每个部门的人数和平均工资,排除部门编号是10的
    select deptno,count(*),avg(sal) 
    from emp 
    where deptno <>10 
    group by deptno ;
    --where子句不能写到group by 后面 order by 可以写到后面
    
    --统计每个部门的人数,平均工资,排除工资小于2000的部门
    select deptno,count(*),avg(sal)
    from emp
    where avg(sal) >= 2000
    group by deptno
    order by deptno desc;
    --这种写法是错误的,分组过滤需要使用having从句!!!
    ---改进措施:
    --对分组查询的结果进行过滤,要使用having从句,而不是where  having写到group by 后面 与where不一样
    select deptno,count(*),avg(sal) from emp
    group by deptno having avg(sal) >= 2000 order by deptno;
    
    
    ---知识小结:
    ----select -- from -- where -- group by -- having -- select -- order by 的遵从语法格式顺序;
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    
    ----统计每个部门人数,平均工资,排除部门编号为10的和平均工资小于2000的部门
    select deptno,count(*),avg(sal) from emp
    where deptno != 10 group by deptno having avg(sal) <>2000 order by deptno desc;
    --desc 降序;asc是升序。
    
    --emp表列出工资最小值小于2000的职位  (首先分组,按照职位分组)
    select job,min(sal) from emp group by job having min(sal) < 2000;
    
    --列出平均工资大于1200的部门和工作搭配的组合  deptno job 
    select deptno,job,avg(sal) from emp group by deptno,job having avg(sal) > 1200;
    
    --统计人数小于4的部门的平均工资  (按照部门分组)
    select deptno,count(*),avg(sal) from emp 
    group by deptno having count(*) < 4;
    
    --统计各部门最高工资,排除最高工资小于3000的部门  (按照部门排序)
    select deptno,max(sal) 
    from emp
    group by deptno
    having max(sal) >= 3000
    order by deptno;
    
    -----至此,我们的DQL语句中单表查询结束,后面的牵涉到多表查询。
  • 相关阅读:
    php无法连接mongodb 3.0问题解决
    mongodb安全配置
    RedHat6/Centos6.5安装mongodb php driver
    RedHat6/Centos6.5安装mongodb
    ASP.NET Identity 2集成到MVC5项目--笔记02
    ASP.NET Identity 2集成到MVC5项目--笔记01
    C#实体类序列化为XML
    MVC4学习笔记之--身份认证过滤器
    【WPF】学习笔记(三)——这个家伙跟电子签名板有个约定
    【WPF】学习笔记(二)——依旧是一个电子签名板
  • 原文地址:https://www.cnblogs.com/superdrew/p/8056622.html
Copyright © 2011-2022 走看看