zoukankan      html  css  js  c++  java
  • MySQL学习笔记(四)——分组数据group by子句和having子句

         分组允许把数据分为多个逻辑组,以便对每个组进行聚集计算。

         

         例如我们查下每个系里有多少名学生:

         

         在使用group by 子句之前,还需要知道一些规定:

    1. group by 子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更为细致的控制。

    2. 如果在group by子句中嵌套了分组,数据将在最后规定的分组上进行汇总。

    3. group by 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)

    4. select 语句中的每个列都必须在group by子句中给出。

    5. 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多个NULL值,它们将分为一组。

    6. group by 子句必须出现在where子句之后,order by 子句之前

         使用with rollup关键字,可以得到每个分组以及每个分组汇总级别的值:

       

       在上面我们说过了group by在where之后,所以我们都用having来进行数据过滤,having支持所有where操作符

      

      我们选择系里超过2个人的系。

      where 和 having的区别:having在数据分组后进行过滤。

      select 子句顺序:

       子句                说明                                是否必须使用

      select          要返回的列或表达式                         是

      from           从中检索数据的表                    仅在从表选择数据时使用

      where         行级过滤                                        否

     group by     分组说明                               仅在按组计算聚集时使用

     having         组级过滤                                        否

     order by      输出排序顺序                                   否

     limit            要检索的行数                                   否  

  • 相关阅读:
    树莓派更新失败【sudo rpi-update】
    树莓派连接显示器没反应
    Linux命令
    Ansys Fluent报错:an error or interrupt occurred while reading the journal file
    Ansys Fluent从cmd命令行中打开后无法编译UDF【解决】
    Ansys Fluent中动网格运动时,网格被挤压和拉伸,不能及时重画网格而报错【解决】
    ANSYS Fluent中动网格里Event(事件)选项为灰色不可选【解决】
    ANSYS ICEM导入step模型报错【解决】
    win10关闭任务栏程序最近显示
    MATLAB %% 不分节
  • 原文地址:https://www.cnblogs.com/dreamyu/p/6576179.html
Copyright © 2011-2022 走看看