MySQL详解 --- 聚合与分组
1. 聚合函数
聚合函数 | 功能 |
---|---|
count() | 统计满足条件的记录的行数 |
max() | 找出满足条件的记录的最大值 |
min() | 找出满足条件的记录的最小值 |
sum() | 统计满足条件的记录的值的和 |
avg() | 统计满足条件的记录的值的平均数 |
注意:
count
函数的使用:
count(*)、count(id)、count(1)。
count(*)能统计一共有多少条记录,而count(id)是统计id列的非空值的记录数,也就是说它们的值可能不同。扩展阅读: MySQL:count(*),count(字段),count(1)的区别在聚合函数的查询语句中,不能查询除了聚合函数和分组字段之外的字段,因为这样没有意义(一般数据库会报错)。
select max(age) from stu
√
select max(age),name from stu
×聚合函数一般配合
group by
一起使用聚合函数在配合
group by
时,可以额外查询分组字段。select max(age), gender from stu group by gender
√
2. 分组查询
分组查询就是将原有的数据进行分组统计。
select 分组列名1, 分组列表2, 聚合函数1, 聚合函数2 from 表名
group by 分组列名1, 分组列名2;
从格式我们可以看出,分组是可以根据多个字段进行分组的。
• 分组后的条件筛选
select 分组列名, 聚合函数 from 表名
[where 条件1]
group by 分组列名
[having 条件2(可以根据聚合函数的值进行判断)];
我们既可以用where进行条件筛选,也可以用having进行条件筛选。但是这两者放置的位置以及代码执行的逻辑是不同的!
注意:
- select中出现的字段,必须在分组当中。
- having子句中出现的条件判断的字段,也必须在分组当中。
例子:
-- 1
select gender, max(age) from student
where gender='男'
group by gender;-- 2
select gender, max(age) from student
group by gender
having gender='男';
对于示例1,where是对from和select的结构进行筛选的,在经过这一层筛选后,再执行group by进行分组。
对于实例2,having是对group by进行筛选的,在group by执行完毕后,再进行筛选。
SQL查询中各个关键字的执行先后顺序:
from > on > join > where > group by > with > having > select > distinct > order by > limit
MySQL详解 --- 聚合与分组相关推荐
- 大数据WEB阶段(六)MySql详解(二)
MySql详解(二) 一.分组查询 语法: select col_name1,col_name2... from tb_name group by having ...; 练习: 执行下面的SQL,创 ...
- from mysql partition select_爬虫(九十九)mysql详解二
**mysql中字段的常见类型: ** 二进制位 bit(长度) tinyint[(长度)] [有无符号unsigned] [位数低于长度时候是否填充零zerofill] 有符号表示范围-128 ~ ...
- MySql详解(六)
MySql详解(六) MySql事务 一.含义 事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行 二.特点(ACID) A 原子性:一个事务是不可再分割的整体,要么都执 ...
- MySql详解(四)
MySql详解(四) MySql的DML操作 插入: 一.方式一 语法: insert into 表名(字段名,...) values(值,...); 特点: 1.要求值的类型和字段的类型要一致或兼容 ...
- Mysql详解——索引优化
本篇文章是对Mysql索引的创建以及优化进行一个介绍,关于索引的底层原理可以看我另一篇文章:Mysql详解--索引详解 文章目录 一.索引的创建和设计原则 1. 索引的声明和使用 1.1 索引的分类: ...
- 在虚拟机安装MySQL详解
在虚拟机安装MySQL详解 MySQL是一种关系型数据库,原本是瑞典的公司叫MySqlAB公司,后被Oracle收购 DB:database,数据库,里边保存了有组织的规范的数据 DBMS:datab ...
- JPA+MySQL详解
JPA+MySQL详解 首先明确两个端的关联关系,在java实体类定义中,含有mappedBy属性的时关系被维护端,含有关联字段的是关系维护端. 一.OneToOne关联关系 假设有实体People和 ...
- mysql详解(全)
库表基础属性 mysql操作 mysql表操作 mysql表内容操作 mysql查询流程 存储引擎 数据记录存储格式 系统表汇总 建表规范 建表约束 字段类型 sql函数 存储过程 sql关键字 sq ...
- Linux 运维知识梳理(4)MySQL 详解
文章目录 MySQL 安装 服务器标准化环境 一.源码包方式 二.glibc 包方式 三.rpm 包方式 SQL 语句简析 一.数据库 二.数据表 三.数据 四.数据类型 五.查询语句 用户与权限管理 ...
最新文章
- 这次中兴也藏了“备胎”!国产操作系统迎出头之日,即将规模商用
- 用java程序编写ip仿真器_用java 编写一个可以实现IP地址查询功能的课程设计
- 国内一线互联网公司内部面试题库
- php随机数、时间、字符串函数,正则,数组函数
- 服务器2012r2系统安装数据库,数据库图文详解Windows Server2012 R2中安装SQL Server2008...
- Oracle 11g创建Interval分区表
- java poi word 表格_java 使用POI 读写word 表格
- 叮,您有一份ML.NET 速查手册请查收!
- iOS 添加导航栏两侧按钮
- 服务器系统bsd,BSD操作系统大盘点:其它BSD变体
- yum提示Another app is currently holding the yum lock
- Mybatis原理分析之二:框架整体设计
- pycharm 常用设置
- 车载网络技术革新-CAN FD浅析
- python查看函数源代码
- 你们要的日文AI实时字幕来了,谷歌浏览器VS小白浏览器AI大比拼
- 时光轴全新导购网站购物新体验
- Tomcat访问localhost:8080直接跳转到项目首页
- java xlsm_使用apache poi写入xlsm(Excel 2007)
- 按头安利 好看又实用的毛笔书法字体素材看这里