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函数
    字符滚动效果0515复习笔记+注释
    0514复习Windows操作及DOM的使用
    超链接文字随状态改变变色2016-0514
    js笔记之影音插入0514
    js类型转换,运算符,语句
    JS学习1简介
    json文件的json.parse(data)方法时候碰到的问题
    样式属性
    css样式表0513补
  • 原文地址:https://www.cnblogs.com/superdrew/p/8056622.html
Copyright © 2011-2022 走看看