• MySQL之数据查询(分类汇总与排序)


    1、GROUP BY子句

            GROUP BY子句主要用于根据字段对行分组。例如,根据学生所学的专业对学生基本表中的所有行分组,结果是每个专业的学生成为一组。

    语法格式:GROUP BY[ 列名 ] [ ASC | DESC ],...[ WITH ROLLUP ]

     GROUP BY可以根据一个或多个列进行分组,也可以根据表达式进行分组,经常和聚合函数一起使用。

    例:输出Book表中图书类别名

    1. SELECT 图书类别
    2. FROM Book
    3. GROUP BY 图书类别;

     例:按图书类别统计Book表中各类图书的库存数

    1. SELECT 图书类别,COUNT(*)AS '库存数'
    2. FROM Book
    3. GROUP BY 图书类别;

     使用带ROLLUP操作符的GROUP BY子句,指定在结果集内不包含由GROUP BY提供的正常行,还包括汇总行。

    例:按图书类别、出版社分类统计Book表中各类图书的库存数,并进行分类小计

    1. SELECT 图书类别,出版社,Sum(数量)AS '库存数'
    2. FROM Book
    3. GROUP BY 图书类别,出版社
    4. WITH ROLLUP;

     2、HAVING子句

            使用HAVING子句的目的与WHERE子句类似,不同的是WHERE子句是用来在FROM子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行。

            语法格式:HAVING 条件

            SQL标准要求HAVING必须引用GROUP BY子句中的列或用于聚合函数中的列。不过,MySQL支持对此工作性质的扩展,并允许HAVING引用SELECT清单中的列和外部子查询中的列。

    例:查找Sell表中每个会员平均订购册数在10本以上的会员的身份证号和平均订购册数。 

    1. SELECT 身份证号,AVG(订购册数)AS '平均订购册数'
    2. FROM Sell
    3. GROUP BY 身份证号
    4. HAVING AVG(订购册数)>10;

     3、ORDER BY子句

            在一条SELECT语句中,若不使用ORDER BY子句,结果中的行的顺序是不可预料的。使用ORDER BY子句后可以保证结果中的行按一定顺序排列。

    语法格式:ORDER BY{列名 | 表达式 | 列编号}[ ASC | DESC ],...

            关键字ASC表示升序排列,DESC表示降序排列,系统默认值为ASC

    例:将Book表中记录按出版时间先后排序 

    1. SELECT *
    2. FROM Book
    3. ORDER BY 出版时间;

     例:将Sell表中记录按订购册数从高到底排列

    1. SELECT *
    2. FROM Sell
    3. ORDER BY 订购册数 DESC;

     4、LIMIT子句

            LIMIT子句是SELECT语句的最后一个子句,主要用于限制被SELECT语句返回的行数

    语法格式:LIMIT{ [ 偏移量,]行数 | 行数OFFSET 偏移量}

    例如,LIMIT 5表示返回SELECT语句的结果集中最前面5行,而LIMIT 3,5则表示从第4行开始返回5行。

    例:查找Members表中注册时间最靠前的5位会员的信息 

    1. SELECT * FROM Members
    2. ORDER BY 注册时间
    3. LIMIT 5;

     当初始化不是从头开始时,要使用两个参数LIMIT偏移量,行数,值得注意的是初始行的偏移量为0而不是1。

    例:查找Book表中从第4条记录开始的5条记录

    1. SELECT *
    2. FROM Book
    3. ORDER BY 学号
    4. LIMIT 3,5;
  • 相关阅读:
    《JavaSE-第十七章》之LinkedList
    【前端】IOS微信浏览器点击右上角遮罩实现
    81 · 寻找数据流的中位数
    c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现)
    从数据到AI,B2B迎来「拐点时刻」
    LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题
    数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)
    ORB-SLAM2解读MapPointCulling
    Spring中的循环依赖问题
    【电磁】基于 Biot-Savart 定律模拟沿螺旋(螺线管或环形)电流回路的磁场附matlab代码
  • 原文地址:https://blog.csdn.net/qq_62731133/article/details/126065002