在讲解具体的分组统计操作之前必须要先解决一个问题,什么情况下有可能分组?
·例如:全班,男生一组,女生一组,互相拔河;
·例如:全部,戴眼睛一组,不戴眼睛一组,互相比裸眼视力;
·例如:25 岁之前一组,25 岁之后一组,比年轻。
SELECT [DISTINCT] * | 列名称 [别名] , 列名称 [别名] ,... | 统计函数 -> 4、确定查询列
FROM 数据表 [别名] , 数据表 [别名] ,... ->1、数据来源
[WHERE 条件(s)] -> 2、过滤数据行
[GROUP BY 分组字段, 分组字段, ...] -> 3、执行分组操作
[ORDER BY 字段 [ASC | DESC] , 字段 [ASC | DESC] ,...] -> 5、数据排序
范例:按照职位分组,统计出每个职位的平均工资、最高和最低工资、人数
SELECT job,AVG(sal),MAX(sal),MIN(sal),COUNT(*)
FROM emp
GROUP BY job ;
范例:按照部门编号分组,统计出每个部门的人数、平均工资、平均服务年限
SELECT deptno,COUNT(empno),AVG(sal) , AVG(MONTHS_BETWEEN(SYSDATE,hiredate)/12)
FROM emp
GROUP BY deptno ;
提示:关于统计查询的几个重要说明。
以上的代码只是根据基础语法实现了统计的操作,但是在整个操作之中还会存在有三个限制:
·限制一:统计函数单独使用