zoukankan      html  css  js  c++  java
  • 《SQL 基础教程》第三章:聚合和排序

    这一章节主要讲了三方面的内容:

    1. 数据的汇总操作
      a. 聚合函数
      b.分组操作
    2. 给汇总操作指定条件
    3. 对汇总结果进行排序

    COUNT()等聚合函数

    定义:

    输入多行,输出一行的函数称为聚合函数

    功能:

    用于对数据进行汇总,如:

    1. COUNT: 计算表中的记录数( COUNT(*) 的时候为所有行的行数, COUNT(<column>)的时候是不包含 NULL 时候的行数.
    2. SUM: 计算数值列中的合计值(提前将 NULL 排除)
    3. AVG:计算数值列中的平均值(提前将 NULL 排除)
    4. MAX: 求任意列中数据的最大值
    5. MIN: 求任意列中数据的最小值

    格式:

    SELECT SUM(<column-name>)
    FROM <tablename>;

    其中 column-name 为函数的参数,
    其前可加关键词 DISTINCT, 用于合并相同的数据

    GOURP BY 子句 & 聚合键

    定义:

    现将表分组,然后进行汇总操作,这一过程需要 GROUP BY 子句.
    GROUP BY 中指定的列称为「聚合键」,其中值为 NULL 的数据单纯列为一列.

    格式:

    SELECT <column1>, <column2>,<column3>,....
    FROM <tablename>
    GROUP BY <column1><column2>,<column3>...

    其他问题

    问题1

    同时包含 WHERE, GROUP BY 子句的时候,先运行 WHERE 子句对数据进行过滤.
    具体顺序如下:

    1. FROM
    2. WHERE
    3. GROUP BY
    4. SELECT

    问题2

    GROUP BY 与 DISTINCT 的区分

    1. 当想要计算汇总结果的时候,用 GROUP BY
    2. 当想要合并数据的时候用 DISTINCT

    问题3

    把聚合键之外的列名写在 SELECT 子句中
    问题原因:
    聚合键和其他列名并不是一对一的

    规定: 有聚合键的 SELECT 语句,只能包含:常数、聚合函数、聚合键

    HAVING 子句 & 为汇总指定条件

    定义:

    在对数据分组之后,得到其聚合函数的值, HAVING 子句可以特定分组的值.

    格式:

    SELECT product_type, COUNT(*)
    FROM Product
    GROUP BY product_type
    HAVING COUNT(*) = 2;


    HAVING 子句中可包含常数、聚合函数、聚合键

    ORDER BY 子句 & 排序键

    定义:

    在对数据进行查询之后,对数据进行排序的语句为 ORDER BY ;
    ORDER BY 中书写的列名叫做「排序键」,其规则如下:

    1. 可指定多个排序键,按优先顺序从高到低排序
    2. 在最后添加 ASCDESC 关键字可指定升序降序.
    3. 排序后, NULL 数据位于表的末尾

    总结

    汇总的语法顺序为:
    SELECT--->FROM-->WHERE-->GROUP BY-->HAVING-->ORDER BY

    汇总的执行顺序为:
    FROM-->WHERE-->GROUP BY-->HAVING-->SELECT-->ORDER BY

    由此产生的特殊问题

    由于别名是在 SELECT 语句中执行的,在它之前的语句,比如 GROUP BY 就不能使用别名;在其之后的语句,ORDER BY 可以使用别名.





  • 相关阅读:
    [转载]DataView详解
    (转)C#中“EQUALS”与“==”的速度比较
    CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFramework64v2.0.50727Temporary ASP.NET Files oot921bbfc4ca7cf42App_Code.fu98jwep.dll”--“拒绝访问。 ”
    C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节
    C# 利用mysql.data 在mysql中创建数据库及数据表
    【转载】经典SQL语句大全
    我不是一个做产品人,但我有一颗做产品的心--浅谈“痛点”
    软件工程--个人总结
    第十六周进度条
    梦断代码阅读笔记3
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10684486.html
Copyright © 2011-2022 走看看