Oracle数据库基础知识3

分组-group by

在多行函数中不能直接使用普通字段,除非group by

在多行函数中不能直接使用单行函数,除非group by

  • 使用group by进行数据分组 select 多行函数,分组字段 from 表名 group by 分组字段

  • 多字段进行分组的时候,按照字段顺序进行分组,第一条件分组完成后,继续使用其他条件依次分组。

  • group by依然可以和order by 联合使用
  • 可以和单行函数联合进行分组,注意使用了单行函数那么在查询语句中必须也要使用
  • 实例
    • 查询最高工资和员工数
      select max(sal),count(*) from emp
    • 查询不同部门的最高工资
      select * from emp order by deptno
      select deptno,max(sal) from emp group by deptno–使用group进行分组查询,分组的字段可以出现在查询中,其他字段依然不可以
    • 查询不同工作岗位的员工数
      select * from emp for update
      select lower(job),count(*) from emp group by lower(job)–使用单行函数进行分组
    • 查询不同部门的不同工作岗位的人数
      select deptno,job ,count(*) from emp group by deptno,job–使用多字段组合进行分组
      select deptno,job ,count(*) from emp group by deptno,job order by deptno
    • 查询不同部门的不同工作岗位的并且人数大于1的信息–错误
      select count(**) from emp where count()>3 group by deptno
      select deptno,job ,count(
      ) from emp where count(*)>1 group by deptno,job order by deptno
      where中不能出现多行函数
    • 查询部门号大于10的不同部门的不同工作岗位的人数
      select deptno,job ,count(*) from emp where deptno>10 group by deptno,job order by deptno

分组后筛选-having

  • 使用group by分组后在进行数据筛选的时候,where中不能出现多行函数,所以使用新的关键字having进行条件筛选
  • where条件筛选的执行顺序:from–>where—>group –>select
  • having条件筛选的执行顺序:from–>group by –>having–>select
  • where的执行效率比having要高,能使用where的情况下尽量不要使用having
  • 实例
    • 查询不同部门的不同工作岗位的并且人数大于1的信息
      select deptno,count() from emp group by deptno having count()>5
      select deptno,job ,count(*) from emp group by deptno,job having deptno>10 order by deptno

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYBDAvSo' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片