group by语法: select * from emp group by 列
1.出现在select列表中的字段, 如果出现的位置不是在分组函数中, 那么必须出现在group by子句中select job,count(empno),avg(sal) from emp group by job
2.在group by子句中出现的字段, 可以不出现在select列表中
select count(empno),avg(sal) from emp group by job
3.如果没有group by子句默认整张表都会看成是一个组
select job,count(empno),avg(sal) from emp
注意:
where: 是在执行group by操作之前进行的,筛选出不参与分组的
having :是在group by分组后的再次过滤(可以使用统计函数)
注意:
分组查询,在select子句中出现分组函数->并且其他字段在select中的话group by后面必须也要有...否则是畸形图
正确做法:
select job,count(empno),avg(sal) from emp group by job
错误的做法:
select deptno, job,count(empno),avg(sal) from emp group by job