组函数(聚合函数):
1.avg 求平均 (只能是number 类型)
2.sum 求和 (只能是number 类型)
3.max 最大值(可以使是number,varchar,Date 类型)
4.min 最小值 (可以使是number,varchar,Date 类型)
select avg(salary),sum(salary),max(salary),min(salary) from employees;
5.count 计数函数 (可以为任意类型)
select count(1),count(2),count(*),count(salary) from empployees;
注意:组函数返回的是不为空的记录。
select count(nvl(commission_pct,0)) from employees;
6.distinct 去重
7.group by 分组函数
select ......
from ........
( where.....)
group by.......
having........
order by......
select department_id,avg(salary)
from employees
where department_id in(10,20,40)
group by department_id;
(就以上一段sql语句,理解执行的顺序,from-->where-->group by -->having --- >order by --> select)
在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。即在select中包含的除了组函数(聚合函数)列外的列,都应该出现在Group By语句中。
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干 个“小区域”进行数据处理。
8.having 条件过滤
where 子句中是不能有组函数(聚合函数)
having 可以有组函数(聚合函数)
select department_id,avg(salary)
from employees
--where avg(salary)>6000
group by department_id
having avg(salary)>6000
order by department_id;