在select列表中所有未包含在组函数中的列都应包含在group by子句中
换句话说:包含在group by子句中的列不必包含在select列表中
select a,b,c,组函数(x)
from table
group by a,b,c;
上面select后面a,b,c一个都不能少;
select deptno,avg(sal) from emp group by deptno;
select avg(sal) from emp group by deptno;
按照部门号,不同的职位对员工工资进行分组
select deptno,job,sum(sal)
from emp
group by deptno,job;
加上排序
select deptno,job,sum(sal)
from emp
group by deptno,job
order by deptno;
*******************************************************
SQL> select deptno,avg(sal) from emp group by deptno;
DEPTNO AVG(SAL)
---------- ----------
30 1566.66667
20 2175
10 2916.66667
SQL>
SQL> select avg(sal) from emp group by deptno;
AVG(SAL)
----------
1566.66667
2175
2916.66667
SQL> select deptno,job,sum(sal)
2 from emp
3 group by deptno,job;
DEPTNO JOB SUM(SAL)
---------- --------- ----------
20 CLERK 1900
30 SALESMAN 5600
20 MANAGER 2975
30 CLERK 950
10 PRESIDENT 5000
30 MANAGER 2850
10 CLERK 1300
10 MANAGER 2450
20 ANALYST 6000
已选择9行。
SQL> select deptno,job,sum(sal)
2 from emp
3 group by deptno,job
4 order by deptno;
DEPTNO JOB SUM(SAL)
---------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 6000
20 CLERK 1900
20 MANAGER 2975
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
已选择9行。
Group by
·在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中
·包含在GROUP BY 子句中的列不必包含在SELECT 列表中
select a,b,c,组函数(x) from table group by a,b,c;
select avg(sal) from emp group by deptno;
select deptno,job,sum(sal) from emp group by deptno,job;
group by子句
在select 列表中所有未包含在组函数中的列都应该包含在group by子句中
多个分组实现,先按deptno分组然后按job分组
group by 也是有顺序执行能力的呀
忽然间明白,这玩意说的就是存在的东西就不能忽略,要不你就别存在的意思吧;
o,select 里面排出的列在group by里面必须体现
这节课信息量太大了,标重点
还能通过改变过去然后执行上一条来改善现在
group by 子句的使用
·group by 子句将表的数据分成若干份
示例:求每个部门的平均工资,要求显示:部门号,部门的平均工资
select deptno,avg(sal) from emp group by deptno;
·在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中
·包含在GROUP BY 子句中的列不必包含在SELECT 列表中
select a,b,c,组函数(x) from table group by a,b,c;
select avg(sal) from emp group by deptno;
select deptno,job,sum(sal) from emp group by deptno,job;
select列表中,不在组函数中的字段,必须在group by子句中
select a, 组函数(x)
from table
group by a;
select 列表中所有未包含在组函数中的列都要包含在GROUP BY 子句中;而GROUP BY子句中的列不必包含在SELECT列表中,此时查询结果也只有select中的列
select a,b,c,avg(sal)
from emp
group by a,b,c;
group by子句将表中的数据分成若干组
group by子句语法
1.在select列表中所有未包含在组函数中的列都应该包含在group by字句中。
2.包含在group by子句中的列不必包含在select列表中
select a,b,c,组函数(x) from emp group by a,b,c;
select avg(sal) from emp group by deptno;

组函数外的字段要加到group by 里面
在select列表中所有未包含在组函数中的列都应该包含在group by子句中
分组语句:group by
注意:所有包含于select列表中,而未包含于组函数中的列都必须包含于group by子句中。

select a,b,c,avg(sal)
from emp
group by a,b,c;
select a, 组函数(x)
from table
group by a;
select 列表中所有未包含在组函数中的列都要包含在GROUP BY 子句中;而GROUP BY子句中的列不必包含在SELECT列表中
在select列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中。
非法使用组函数错误编号为“ORA-00937"
order by 顺序(小到大排序)
查询多个字段,不在组函数里的字段必须包含在group by 里面。赞。~
select deptno ,avg(sal)
from emp
group by deptno ; --按照部门编号分组
select a,b,c ,组函数(x)
from table
group by a ; --这里应该写a,b,c 不能只写a 通过部门号 然后通过b c条件接着分组
只写a ora-00937 非法使用分组函数
在select 列表中所有未包含的组函数中的列 group by中都应该写
select avg(sal)
from emp
group by deptno; --这种不会展示deptno
select 字段1,avg(字段2)
from 表名
group by 字段1,字段2
order by 字段1;