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

这篇文章主要介绍了MySQL分组函数、聚合函数、分组查询,结合实例形式分析了MySQL查询分组函数以及查询聚合函数相关使用技巧,需要的朋友可以参考下

一、简单使用

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

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

?

1

2

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

from employees;

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

二、搭配distinct去重

(以上函数均可)

?

1

2

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

from employees;

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

三、count()详细介绍

?

1

2

3

#相当于统计行数方式一

select count(*)

from employees;

?

1

2

3

#相当于统计行数方式二,其中1可以用其他常量或字段替换

select count(1)

from employees;

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

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

四、分组查询

?

1

2

3

4

5

6

#其中[]内为可选

select 分组函数,列表(要求出现在 group by 的后面)

from 表

[where 筛选条件]

group by 分组列表

[order by 子句]

示例:

?

1

2

3

4

#查询每个工种的最高工资

select max(salary) as 最高工资,job_id

from employees

group by job_id;

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

?

1

2

3

4

5

#查询每个部门中,邮箱包含a的员工的平均工资(分组前的筛选)

select avg(salary) as 平均工资,department_id

from employees

where email like '%a%'

group by department_id;

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

?

1

2

3

4

5

6

#查询部门员工数量大于2的部门的员工数量(分组后的筛选)

#使用having

select count(*) as 员工数量,department_id

from employees

group by department_id

having count(*)>2;

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

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

?

1

2

3

4

#按照多字段

select count(*) as 员工数量,job_id,department_id

from employees

group by job_id,department_id;

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

?

1

2

3

4

5

6

7

#完整结构

select avg(salary) as 平均工资,department_id

from employees

where department_id is not null

group by department_id

having avg(salary)>9000

order by avg(salary) desc;

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

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

原文链接:https://blog.csdn.net/m0_46653805/article/details/120731863

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/4855/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022-07-23 12:45:46
下一篇 2022-07-23 12:45:59

软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!