11、Oracle的分组
Update date:
1、分组的概念
分组 就按照一定的标准 把数据分成若干部分
2、语法格式
select 字段
from 表名
where 条件
group by 分组标准 having 组函数的过滤条件
order by 排序标准 排序方式;
3、
举例
按照部门编号分组 统计部门的人数
select dept_id,count(id)
from s_emp
group by dept_id;
------------------------------------------------------------------------------------------
显示人数大于2 的部门
select dept_id,count(id)
from s_emp
group by dept_id having count(id) > 2;
------------------------------------------------------------------------------------------
4、
按照部门编号分组 统计每个部门的平均工资 显示平均工资大于1400 的部门
select dept_id,avg(salary)
from s_emp
group by dept_id having avg(salary) > 1400;
5、sql语句的执行顺序
from where group by having select order by
6、按照部门编号分组 统计每个部门的工资和 显示工资和大于3000的部门
select dept_id,sum(salary)
from s_emp
group by dept_id having sum(salary) > 3000;
7、在 6 的基础上 显示每个部门的名字
select dept_id,sum(salary),max(name)
from s_emp,s_dept where dept_id = s_dept.id
group by dept_id having sum(salary) > 3000;
------------------------------------------------------------------------------------------
结论:在分组语句中 select 后的字段要么是分组标准 要么是经过合适的组函数处理过的
8、
按照地区编号分组 统计每个地区中部门个数 并显示地区名
select region_id,count(d.id),max(r.name) name
from s_dept d, s_region r
where d.region_id = r.id
group by region_id;