SELECT SUM(math) FROM exam_result WHERE math < 60;
复制代码
统计均匀总分
SELECT AVG(chinese + math + english) 平均总分 FROM exam_result;
复制代码
返回英语最高分
SELECT MAX(english) FROM exam_result;
复制代码
返回 > 70 分以上的数学最低分
SELECT MIN(math) FROM exam_result WHERE math > 70;
复制代码
7. group by子句的使用
分组,聚合统计
在select中使用group by 子句可以对指定列进行分组查询:
select column1, column2, .. from table group by column;
复制代码
样例:
准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)
EMP员工表
DEPT部分表
SALGRADE工资品级表
group by —— 指定列名,实际分组,是用该列的差别行的数据来进行分组。分组的条件depton(下面的第一个例子),组内肯定是相同的,是可以被聚合压缩的。
分组,就是把一组按照条件拆分成了多个组,进行各自组内的统计。分组(“分表”),就是把一长表按照条件在逻辑上拆成了多个元素,然后分别对各自的子表进行聚合统计。
7.1 练习
怎样显示每个部分的均匀工资和最高工资
select deptno,avg(sal),max(sal) from EMP group by deptno;
复制代码
显示每个部分的每种岗位的均匀工资和最低工资
select avg(sal),min(sal),job, deptno from EMP group by deptno, job;
select avg(sal) as myavg from EMP group by deptno having myavg<2000;
--having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where
复制代码
having 和 where区别明白?实行顺序,构建对 “结果” 的明白。
where是对具体的一列进行筛选,having是对分组聚合后的结果进行筛选。条件筛选的阶段是差别的。
不要单纯的以为,只有磁盘上的表结构导入到MySQL,真实存在的表,才叫做表。在MySQL中心筛选出来的表,包括最终的结果,在我看来都是逻辑上的表。 面试题:SQL查询中各个关键字的实行先后顺序 from > on> join > where > group by > with > having > select> distinct > order by > limit