• 0007《SQL必知必会》笔记03-汇总与分组数据


    1、有些时候需要数据的汇总值,而不是数据本身,比如对某些数据求和、计数、求最大最小值、求平均值,因此就有了5个聚集函数:AVE()、COUNT()、MAX()、MIN()、SUM():

      (1)求平均值:AVE(),一个AVG()只对一个字段有效,注意AVE()忽略NULL值,而不是将其作为“0”参与计算

    SELECT AVG(字段名1),```,AVG(字段名n) FROM 表名 WHERE 字句;

        

      (2)计数:COUNT(),两种用法:COUNT(*):对表中行数进行计数,不管是否有NULL;COUNT(字段名):对特定列有数据的行进行计数,忽略NULL值

      (3)求最大、最小值:MAX()、MIN():多用于数值和日期,文本也可以用,升序排列的最大或最小值。都忽略NULL

      (4)求和:SUM():可以对单个列求和,也可以对多个列乘积求和:

      (5)ALL与DISTINCT:可用于以上5个函数,默认是ALL,对非重复值计算是DISTINCT,用在函数的参数中,与字段名用空格隔开

      (6)聚集函数的组合:以上几个函数可以包含在SELECT语句中,比如求Products中的商品总数、平均价格、最高价格、最低价格

    2、将数据在逻辑上进行分组:比如求各个供应商的商品总数、平均价格、最高价格、最低价格

      

      (1)GROUP BY的使用规定:

        1.GROUP BY 语句必须出现在WHERE之后,ORDER BY 之前

        2.分组列中若有NULL,这也将作为一组

        3.除聚集计算语句外,SELECT中的选择列必须出现在GROUP BY 中

        4.GROUP BY 的列必须是检索列或者表达式,若是在SELECT中使用的表达式,在GROUP BY 中也要使用相同的表达式,还不能用别名

        5.GROUP BY 可以包含任意数目的列,可以嵌套

    3、将分组进行过滤:HAVING,与GROUP BY 配合使用,与WHERE类似,只是WHERE针对行,HAVING针对逻辑分组,比如列出有2个及以上产品,并且其价格大于等于4的供应商:

        WHERE过滤掉的行不参与GROUP BY的分组

    4、分组(GROUP BY)与排序(ORDER BY):GROUP BY输出的数据不一定有顺序;ORDER BY 可以使用任意列(包括非选择列),但GROUP BY只能且必须使用选择列火表达式列;ORDER BY 可以没有,但GROUP BY 在有选择列(或表达式列)与聚集函数一起时,必须使用。

    5、SELECT、FROM、WHERE、GROUP BY、HAVIN、GORDER BY顺序

  • 相关阅读:
    Hibernate---对象的三种状态
    grunt+bower依赖管理
    grunt 的安装和简单使用
    sqlserver dmv 动态管理视图
    ado.net 数据库连接池
    桥接模式
    .net MVP
    主定理(分治算法)
    图中环的判断
    选举协议paxos 协议 理解
  • 原文地址:https://www.cnblogs.com/sonng/p/5384713.html
Copyright © 2020-2023  润新知