组函数针对的是指定字段的非空值。注意:where子句中不能出现组函数!!!
avg() 平均值(只能针对数值型 )
max() 最大值(不限制类型)
min() 最小值(不限制类型)
count() 计数(针对记录数目,即行数)
stddev() 方差(只能针对数值型)
sum() 求和(只能针对数值型)
前提:person表
id namedept_idsalarymanager_id
0001wangda101 8500[NULL]
0002wanger1033 000 0009
0003wangsan102 4000 0006
0004wangsi104 2000 0005
0005wangwu104 6000 0001
0006wangliu102 7000 0001
0007wangqi105 5000 0008
0008wangba105 5500 0001
0009wangjiu103 6000 0001
0010wangshi104 900 0005
0011wangsy103 5000 0009
0012wangse[NULL]3000[NULL]
group by 排序(可以有一个或者多个字段)
功能:按照部门查询各部门的平均工资
SELECT
dept_id,
avg(salary)
FROM
person
GROUP BY
dept_id
;
结果:
dept_idavg(salary)
[NULL]3000.000000
101 8500.000000
102 5500.000000
103 4666.666667
104 2966.666667
105 5250.000000
HAVING 在查询条件中含有组函数时,用来替代WHERE(注意:在mysql中,having只能放在group by的后面!)
功能:查询部门平均工资高于5000的部门名称(dept表)、部门平均工资(person表,组函数)
SELECT
p.dept_id,
dept_name,
avg(salary)
FROM
person p,dept d
where p.dept_id = d.dept_id
GROUP BY
p.dept_id
HAVING
avg(salary)>5000;
结果:
dept_iddept_nameavg(salary)
101 zongwu 8500.000000
102 zhenggong5500.000000
105 renshi 5250.000000