zoukankan      html  css  js  c++  java
  • 11汇总和分组数据

    1.聚合函数
    聚合函数:对一组值执行计算,并返回单个值。
     
    聚合函数
    支持的数据类型
    描述
    sum()
    数字
    对指定列中的所有非空值求总和
    avg()
    数字
    对指定列中的所有非空值求平均值
    min()
    数字、字符、datetime
    返回指定列中的最小数字
    最早的日期
    或者最小的字符串
    max()
    数字、字符、datetime
    返回指定列中的最小数字
    最早的日期
    或者最小的字符串
    count()
    任意基于行的数据类型
    统计结果集合中全部记录行的数量
    示例1:查询玩家表中有多少玩家信息

    SELECT COUNT(*) FROM users

    示例2:查询特定字段有多少条记录:

    SELECT COUNT(user_qq) FROM users

    注:由于字段可能存在null,因此要查询所有记录的数量时,采用(*)的形式查询。
    示例3:查询QQ号的12301的玩家游戏的总分数

    SELECT SUM(score) AS "总分数" FROM scores
    WHERE user_qq = "12301"

    2.在结果集内分组
    使用GROUP BY分组
    示例:查询每个玩家的总分数、平均分数、最高分

    SELECT user_qq , #显示user_qq列,以对应后面数据的对象。
    SUM(score) AS '总分',
    avg(score) AS '平均分',
    max(score) AS '最高分'
    FROM scores
    GROUP BY user_qq #根据玩家的字段进行分组统计

    3.筛选分组结果
    在使用GROUP BY 子句时,可用HAVING子句为分组统计进一步设置统计条件,HAVING子句与GROUP BY 子句的关系相当于WHERE子句与SELECT子句之间的关系。
    与WHERE子句的区别是,在HAVING子句中是以聚合函数的统计结果为筛选条件
    示例1:查询平均数大于4000的玩家QQ号、总分数、平均分数

    SELECT user_qq AS '玩家QQ', #显示user_qq列,以对应后面数据的对象。
    sum(score) AS '总分',
    avg(score) AS '平均分',
    max(score) AS '最高分'
    FROM scores
    GROUP BY user_qq
    HAVING avg(score)<4000
    注:HAVING必须写在GROUP BY 之后。

    示例2:查询平均数大于4000的玩家QQ号、总分数、平均分数,并按照平均数倒序排列。

    SELECT user_qq AS '玩家QQ', #显示user_qq列,以对应后面数据的对象。
    sum(score) AS '总分',
    avg(score) AS '平均分',
    max(score) AS '最高分'
    FROM scores
    GROUP BY user_qq
    HAVING avg(score)<4000
    ORDER BY avg(score) DESC

    4.SELECT语句的执行顺序
    from子句指定数据源
    where子句基于指定的条件对记录进行筛选
    group by子句将数据划分为多个分组
    使用聚合函数进行计算
    使用having子句筛选分组
    order by 子句对结果进行排序
    注:以上的排序均从“减少计算量,提高计算速度”的角度进行考量。
     
  • 相关阅读:
    js判断是否第一次访问跳转
    dt系统中tag如何使用like与%来进行模糊查询
    DT图库列表修改内容标题字数
    第二周冲刺第四天个人博客
    04《梦断代码》阅读笔记01
    第二周冲刺第三天个人博客
    03《构建之法》阅读笔记03
    第二周冲刺第二天个人博客
    02《构建之法》阅读笔记02
    第二周冲刺第一天个人博客
  • 原文地址:https://www.cnblogs.com/yimengtianya1/p/8947679.html
Copyright © 2011-2022 走看看