oraclegroupby的⽤法
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查询之外的列。
查询每个部门的每种职位的雇员数
groupby分组select deptno,job,count(*) from emp group by deptno,job
/****************************************************************
记住这就⾏了:
在使⽤group by 时,有⼀个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by ⼦句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论