【MySQL】条件查询之排序聚合分组分页查询

摘要:
排序查询语法:orderby子句orderby排序字段1排序方法1,排序字段2排序方法2…排序方法:ASC:升序,默认值。聚合函数将一列数据作为一个整体进行垂直计算。解决方案:1.选择不包含非空数据的列进行计算2.IFNULL函数分组查询:语法:groupby分组字段;注意:分组后查询的字段:分组字段、聚合函数where和have之间有什么区别?其中在分组之前定义。如果不满足条件,它将不参与分组。分别查询男女学生的平均分数。所需人数:分数低于70分者不参加分组。

排序查询

  • 语法:order by 子句

    • order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
  • 排序方式:

    • ASC:升序,默认的。
    • DESC:降序。
  • 注意:

    • 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。

聚合函数

将一列数据作为一个整体,进行纵向的计算。

  1. count:计算个数

    一般选择非空的列:主键

    select count(id) from 表名

  2. max:计算最大值

  3. min:计算最小值

  4. sum:计算和

  5. avg:计算平均值

注意:聚合函数的计算,排除null值。

解决方案:

1. 选择不包含非空的列进行计算
2. IFNULL函数

分组查询:

  1. 语法:group by 分组字段;

  2. 注意:

    1. 分组之后查询的字段:分组字段、聚合函数
    2. where 和 having 的区别?
      • where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
      • where 后不可以跟聚合函数,having可以进行聚合函数的判断。
    -- 按照性别分组。分别查询男、女同学的平均分
	
	SELECT sex , AVG(math) FROM student GROUP BY sex;
	
	-- 按照性别分组。分别查询男、女同学的平均分,人数
	
	SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
	
	--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
	SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
	
	--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
	SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
	
	SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

分页查询

  1. 语法:limit 开始的索引, 每页查询的条数;

  2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数

exam:每页显示3条记录

	SELECT * FROM student LIMIT 0,3; -- 第1页
	SELECT * FROM student LIMIT 3,3;  -- 第2页
	SELECT * FROM student LIMIT 6,3;  -- 第3页

免责声明:文章转载自《【MySQL】条件查询之排序聚合分组分页查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Selenium浏览器自动化测试工具HTML5 文件处理之FileAPI简介整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql性能优化-慢查询分析、优化索引和配置【转】

一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三、配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)  ...

MySQL排序原理与MySQL5.6案例分析【转】

本文来自:http://www.cnblogs.com/cchust/p/5304594.html,其中对于自己觉得是重点的加了标记,方便自己查阅。更多详细的说明可以看沃趣科技的文章说明。 前言      排序是数据库中的一个基本功能,MySQL也不例外。用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Gr...

mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据

转自: https://blog.csdn.net/tsxw24/article/details/44994835 我经常使用order by和limit来做数据分页显示并排序,一直也没发现过什么问题。但这两天缺遇到一个严重的问题,在按时间戳升序排列并用limit分批读取数据时,却发现在某些记录丢失了,表中明明有的记录确死活读取不到。研究了大半天终于发现了...

MySQL SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础。 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO...

【Mysql】Mysql字符集CHARACTER和COLLATE

一:设置服务器默认字符集为 utf8mb4 创建数据库时,如果没有指定字符集,会采用服务器的默认字符集。设置服务器默认字符集为 utf8mb4 可以提高便利性。 编辑 MySQL 的配置文件,修改服务器默认字符集为utf8mb4。 只需要关心5个系统变量,这5个都改为 utf8mb4 则修改成功: character_set_client characte...

MySQL修改排序规则是否一定重建表

官方文档: alter table: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html online ddl: https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html 其中都没有讲明修改整个表排序规则,...