zoukankan      html  css  js  c++  java
  • SQL分组查询

     实际应用中,我们经常需要做一些数据统计,将表的全部数据划分为几组数据,每组数据统计出一个结果。这种功能可以使用分组函数(多行函数、集合函数)来实现。

        在Mysql数据库中,通过GROUP BY子句将分组的依据加入到查询语句中,并可使用HAVING子句进一步限制查询结果。主要有COUNT/AVG/SUM/MAX/MIN等几个分组函数。

     COUNT:  COUNT函数用来计算表中的总记录条数。

    AVG、SUM:AVG、SUM这两个函数用来统计列或表达式的平均值和和值。

    MAX、MIN:这两个函数用来获取列或表达式的最大值、最小值,可以用来统计任何数据类型。

    要把数据表划分为一个一个小组,需要使用GROUP BY子句,把需要进行分组的列放在这个子句后面,如果需要进一步限制分组后的结果,需要使用HAVING子句。使用语法如下    

    SELECT <*,column [alias],...> FROM table

           [WHERE condition(s)]

           [GROUP BY group_by_expression]

           [HAVING group_condition ]

           [ORDER BY column[ASC|DESC]];

    单列分组: 即分组的依据是一个列

    多列分组:即分组的依据是多个列

      SELECT email,desiredState,max( createTime) ss from ali_edas_app GROUP BY email,desiredState;

    使用HAVING子句用来对分组后的结果进一步限制。如将平均薪水不小于3000才被显示出来:

    注意:

    • AVG、SUM这两个函数只能用来操作数字。
    • MAX、MIN、AVG、SUM等函数在计算时会自动忽略NULL值。
    • 分组函数只能出现在SELECT列表、HAVING子句和ORDER BY子句中,不能出现在WHERE子句中。
    • 如果要限制分组结果,只能使用HAVING子句。
    • 使用分组函数时,出现在SELECT列表中的字段,如果只有组函数的字段,那么可以没有GROUP BY子句,如果还有其他的列或者表达式,则这些列和表达式必须出现在GROUP BY子句中(重要  group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面)
    • 出现在GROUP BY 子句中的列,没有出现在SELECT列表中,语法上是可以的。
  • 相关阅读:
    「仰望天空和脚踏实地」​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​写出我心(一百四十八)
    Backtrader中文笔记之Analyzers(二次修复)
    Backtrader中文笔记之Tick Data and Resampling
    NumPy学习记录
    mac通过ln创建软连接使用。
    mac电脑Pycharm的书签设置。
    matplotlib学习记录.
    Backtrader中文笔记之Pandas DataFeed Example
    Backtrader中文笔记之Using Indicators(指标)
    chmod
  • 原文地址:https://www.cnblogs.com/hym-pcitc/p/5613116.html
Copyright © 2011-2022 走看看