groupby分组
Oracle中分组查询groupby⽤法规则详解
Oracle中group by⽤法
在select 语句中可以使⽤group by ⼦句将⾏划分成较⼩的组,⼀旦使⽤分组后select操作的对象变为各个分组后的数据,使⽤聚组函数返回的是每⼀个组的汇总信息。
使⽤having⼦句限制返回的结果集。group by ⼦句可以将查询结果分组,并返回⾏的汇总信息Oracle 按照group by ⼦句中指定的表达式的值分组查询结果。
在带有group by ⼦句的查询语句中,在select 列表中指定的列要么是group by ⼦句中指定的列,要么包含聚组函数 select max(sal),job emp group by job; (注意max(sal),job的job并⾮⼀定要出现,但有意义) 查询语句的select 和group by ,having ⼦句是聚组函数唯⼀出现的地⽅,在where ⼦句中不能使⽤聚组函数。
select deptno,sum(sal)
from emp where sal>1200
group by deptno
having sum(sal)>8500
order by deptno;
当在gropu by ⼦句中使⽤having ⼦句时,查询结果中只返回满⾜having条件的组。在⼀个sql语句中可以有where⼦句和having⼦句。having 与where ⼦句类似,均⽤于设置限定条件 where ⼦句的作⽤是在对查询结果进⾏分组前,将不符合where条件的⾏去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使⽤where条件显⽰特定的⾏。
having ⼦句的作⽤是筛选满⾜条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使⽤having 条件显⽰特定的组,也可以使⽤多个分组标准进⾏分组。
使⽤order by排序时order by⼦句置于group by 之后并且 order by ⼦句的排序标准不能出现在select查询之外的列。
查询每个部门的每种职位的雇员数
select deptno,job,count(*) from emp group by deptno,job
/****
记住这就⾏了:
在使⽤group by 时,有⼀个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by ⼦句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。)
到此这篇关于Oracle中group by⽤法规则详解的⽂章就介绍到这了,更多相关Oracle group by 内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。