组函数类型:avg、count、max、min、stddev、sum
- 查询员工中工资的平均值,最大值,最小值,总和
select avg(salary),max(salary),min(salary),sum(salary) from employees;
任何数据类型都可以使用max和min,avg和sum只能使用number类型
count记录数据条数
select count(salary),count(1),count(2),count(*) from employees;
avg(salary) = sum(salary)/count(salary),avg只计算不为null的值的平均值
select avg(salary),sum(salary)/count(salary) from employees;
count()只计算列中不为null的数据的总数,如下总数107,不为null的只有35个,执行结果35
select count(commission_pct) from employees;
计算真实的平均值应该如下:
select sum(commission_pct)/count(*), avg(commission_pct),sum(commission_pct)/count(commission_pct) from employees;
或者
select sum(commission_pct)/count(nvl(commission_pct,1)) from employees;
count去重用distinct
select count(distinct department_id) from employees;
group by
求各部门的平均工资
select department_id,avg(salary) from employees group by department_id;
求各部门不同工种的平均工资
select department_id,job_id,avg(salary) from employees group by department_id,job_id;
department_id可以去掉不查询,如下
select avg(salary) from employees group by department_id;
不能在where中使用组函数,可以在having中使用组函数
select avg(salary) from employees having avg(salary) > 4000;
组函数可以嵌套(嵌套组函数必须有group by)
select max(avg(salary)) from employees group by department_id;