sum求和, avg求平均数, max求最大值, min求最小值, count求个数web
简单的使用sql
select sum(salary) from employee; select avg(salary) from employee; select max(salary) from employee; select min(salary) from employee; select count(salary) from employee; select sum(salary) 和,avg(salary) 平均值,max(salary) 最大值,min(salary) 最小值,count(salary) 总数 from employee;
参数支持哪些类型svg
sum和avg通常处理的是数值类型的,而max,min,count能够处理任何类型
以上的分组函数都会忽略null值函数
count的详细介绍spa
select count (*) from employee;//统计个数 select count(1) from employee;
和分组函数一同查询的字段要求是group by 后的字段code
计算入职的最大入职时间与最小值入职时间的相差天数xml
select datediff(max(rdate),min(rdate)) from employee;
查询每一个工种的最高工资 select max(salary),job_id from employee group by job_id
添加筛选条件 分组前的筛选
查询邮箱中包含a字符的,每一个部门的平均工资token
select avg(salary),departid from employee where email like '%a%' group by departid
查询有奖金的每一个领导手下员工的最高工资string
select max(salary),managerid from employee where commision is not null group by managerid
添加复杂的筛选条件 分组后的筛选
案例一:查询哪一个部门的员工的个数大于2it
查询每一个部门的员工个数
select count(*),departid from employee group by departid having count(*)>2
根据上述结果进行筛选查询哪一个部门的员工大于2
案例二:查询每一个工种有奖金的员工的最高工资大于12000的工种编号和最高工资
select max(salary),job_id from employee where commission is not null group by job_id having max(salary)>12000
案例三:查询领导编号>102的每一个领导手下的最低工资>5000的领导编号是哪一个,以及其最低工资
select managerid,min(salary) from employee where managerid>102 group by managerid having min(salary)>5000
案例一:按照员工的姓名长度进行分组,查询每一组的员工个数,筛选员工个数>5的有哪些?
select length(last_name),count(*) from employee group by length(last_name) having count(*)>5
按照多个字段进行分组
案例:查询每一个部门每一个工种的员工的平均工资
select avg(salary),depaerid,job_id from employee group by depaerid,job_id
分组查询中的条件分为两类,一类为分组前进行筛选 group by 子句的前面加上where 另外一类为分组后的筛选,group by子句后面加上having关键字
1.查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
select managerid,min(salary) from employee where managerid is not null group by managerid having min(salary)>=6000
2.查询具备各个job_id员工人数
select count(*) from employee where job_id is not null group by job_id