组函数针对的是指定字段的非空值。注意:where子句中不能出现组函数!!!
avg() 平均值(只能针对数值型 )
max() 最大值(不限制类型)
min() 最小值(不限制类型)
count() 计数(针对记录数目,即行数)
stddev() 方差(只能针对数值型)
sum() 求和(只能针对数值型)
前提:person表
id name dept_id salary manager_id0001 wangda 101 8500[NULL]0002 wanger 1033 000 00090003 wangsan 102 4000 00060004 wangsi 104 2000 00050005 wangwu 104 6000 00010006 wangliu 102 7000 00010007 wangqi 105 5000 00080008 wangba 105 5500 00010009 wangjiu 103 6000 00010010 wangshi 104 900 00050011 wangsy 103 5000 00090012 wangse [NULL]3000[NULL]
group by 排序(可以有一个或者多个字段)
功能:按照部门查询各部门的平均工资
SELECTdept_id,avg(salary)FROMpersonGROUP BYdept_id;
结果:
dept_id avg(salary)[NULL] 3000.000000101 8500.000000102 5500.000000103 4666.666667104 2966.666667105 5250.000000
HAVING 在查询条件中含有组函数时,用来替代WHERE(注意:在mysql中,having只能放在group by的后面!)
功能:查询部门平均工资高于5000的部门名称(dept表)、部门平均工资(person表,组函数)
SELECTp.dept_id,dept_name,avg(salary)FROMperson p,dept dwhere p.dept_id = d.dept_idGROUP BYp.dept_idHAVINGavg(salary)>5000;
结果:
dept_id dept_name avg(salary)101 zongwu 8500.000000102 zhenggong 5500.000000105 renshi 5250.000000
浙公网安备 33010602011771号