• 分组查询以及筛选的区别


    -- 分组查询:(group by)
    -- 注意事项 查询字段:分组的字段,聚合函数
    -- 分组查询加入where条件,必须先执行where条件,再去分组,如果满足条件才能分组
    -- 需求:按照性别分组,分别求出男,女的数学平均分

    SELECT 
      sex,
      AVG(math) '数学成绩平均分'
    FROM
      student 
    GROUP BY sex ;

    -- 需求:按照性别分组,分别求出男女的数学平均分以及总人数
    SELECT 
      sex '性别', -- 分组字段
      AVG(math) '数学平均分', -- 数学平均分
      COUNT(id) '人数' 
    FROM
      student 
    GROUP BY sex ;

    -- 需求:按照性别分组,分别求出男,女的数学平均分以及总人数 条件:数学成绩不大于70分的人不参与分组
    SELECT 
      sex '性别',
      AVG(math) '数学平均分',
      COUNT(id) '人数' 
    FROM
      student 
    WHERE math > 70  -- 条件判断
    GROUP BY sex ; -- 分组

    -- 筛选(having):先进行分组,然后才筛选,而且having后可以跟聚合函数,ground by不能使用聚合函数
    -- 需求需求:按照性别分组,分别求出男,女的数学平均分以及总人数 条件1):数学成绩不大于70分的人不参与分组
            -- 条件2):总人数大于2个的人
    SELECT 
      sex,
      AVG(math),
      COUNT(id) 
    FROM
      student 
    WHERE math > 70 
    GROUP BY sex 
    HAVING COUNT(id) > 2 ;

    -- 简化
    SELECT 
      sex '性别',
      AVG(math) '数学平均分',
      COUNT(id) '人数' 
    FROM
      student 
    WHERE math > 70 
    GROUP BY sex 
    HAVING '人数' > 2 ;

    /*
      having 和 group by的区别?
      group by之前执行where语句,后面才是分组,having 放在group by之后
      group by后面跟的分组字段,不能使用聚合函数;而having后面是可以使用聚合函数的!
    */
     

  • 相关阅读:
    7.Docker 常规软件安装
    广西小额贷款公司名单 (截至2023年5月31日)
    [附源码]java毕业设计星期八酒店管理系统
    【C++】类型转换
    【老生谈算法】matlab编写PSO算法及实例——PSO算法
    【RK3588】YOLO V5在瑞芯微板子上部署问题记录汇总
    MFC 中创建并显示二维码
    CDQ分治+树状数组,LOJ6270. 数据结构板子题
    15812字教你从零入门node.js(基础篇)
    固体物理-复习重点
  • 原文地址:https://blog.csdn.net/weixin_57219176/article/details/125897178