Oracle的分组查询以及子查询

分组查询

关键字:group by 分组字段名,分组字段名……

  注意:使用了分组语句后,select语句后面必须出现多行函数或者分组字段名

        按多字段分组时,先按照第一个字段分,每个小组再按照第二个字段分,以此类推

     where子句中不允许出现多行函数

筛选关键字having

  作用:对分组后的数据进行筛选,可以使用多行函数

  注意:having关键字必须和分组函数一起使用,不能单独使用

sql子句执行顺序

  --from-->where--->group by-->select--->having--->order by

可见,筛选时,在where子句中筛选比在having子句中筛选执行效率高

查询所管理人数大于3个的领导的id

select manager_id,count(*)
from s_emp
group by manager_id
having count(*)>3

 

子查询:

   当查询条件不明确时,可以考虑子查询

    查询工资比Chang工资高的人名

      select salary from s_emp where last_name='Chang';  得到chang的工资为800

      select last_name from s_emp where salary >800; 得到所要的人名

      把两条语句结合起来可以得到:

      select last_name from s_emp where salary >(select salary from s_emp where last_name='Chang')

      当子句中只有一条结果时可以使用比较符连接,否则要用in,not in ,any或all连接

关键字 :any :任意 from 表名     select 内容 from 表名 where 字段名 比较运算符 any 子查询语句

     in 任意,相当于= any  select 内容 from 表名 where 字段名 in 子查询语句  

     all所有    select 内容 from 表名 where 字段名 比较运算符 all 子查询语句

posted @ 2019-09-10 18:28  七月流星丶  阅读(905)  评论(0编辑  收藏  举报