MySQL必备基础之分组函数 聚合函数 分组查询详解

目录
  • 二、搭配distinct去重
  • 三、count()详细介绍

一、简单使用

sum:求和(一般用于处理数值型)
avg:平均(一般用于处理数值型)
max:最大(也可以用于处理字符串和日期)
min:最小(也可以用于处理字符串和日期)
count:数量(统计非空值的数据个数)

以上分组函数都忽略空null值的数据

select sum(salary) as 和,avg(salary) as 平均,max(salary) as 最大,min(salary) as 最小,count(salary) as 数量
from employees;

二、搭配distinct去重

(以上函数均可)

select sum(distinct salary) as 和,avg(distinct salary) as 平均,count( distinct salary) as 去重数量,count(salary) as 不去重数量
from employees;

三、count()详细介绍

#相当于统计行数方式一
select count(*) 
from employees;
#相当于统计行数方式二,其中1可以用其他常量或字段替换
select count(1) 
from employees;

效率问题:
myisam存储引擎下,count(*)的效率高
innodb存储引擎下,count(*)count(1)的效率差不多,比count(字段)

因此一般用count(*)统计行数

四、分组查询

#其中[]内为可选
select 分组函数,列表(要求出现在 group by 的后面)
from 表
[where 筛选条件]
group by 分组列表
[order by 子句]

示例:

#查询每个工种的最高工资
select max(salary) as 最高工资,job_id
from employees
group by job_id;

#查询每个部门中,邮箱包含a的员工的平均工资(分组前的筛选)select avg(salary) as 平均工资,department_idfrom employeeswhere email like '%a%'group by department_id;

#查询部门员工数量大于2的部门的员工数量(分组后的筛选)#使用havingselect count(*) as 员工数量,department_idfrom employeesgroup by department_idhaving count(*)>2;

#按照多字段select count(*) as 员工数量,job_id,department_idfrom employeesgroup by job_id,department_id;

#完整结构select avg(salary) as 平均工资,department_idfrom employeeswhere department_id is not nullgroup by department_idhaving avg(salary)>9000order by avg(salary) desc;

到此这篇关于mysql必备基础之分组函数 聚合函数 分组查询详解的文章就介绍到这了,更多相关mysql 分组函数 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐