MySQL-DQL-分组查询

  • 分组查询

    • 语法:select 字段列表 from 表名[where 条件] group by 分组字段名 [having 分组后过滤条件];
    • group by
      • 具体代码
      • -- 1.根据性别分组,统计男性和女性的员工数量
        select gender, count(*) -- 分组字段+聚合函数
        from tb_emp
        group by gender;
    • having
      • 具体代码
      • -- 2.先查询入职时间在’2015-01-01‘(入职)的员工,并对结果进行职位分组,获取员工数量>=2的职位
        select job, count(*)
        from tb_emp
        where entrydate <= '2015-01-01'
        group by job
        having count(*) >= 2;
    • 小结

      • where 和having区别(面试题目
        • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是对分组后对结果进行过滤
        • 判断条件不同:where不能对聚合函数进行判断,而having可以对聚合函数进行判断
    • 注意事项

      • 分组之后,查询字段一般为聚合函数和分段字段,查询其它字段无意义
      • 执行顺序:where>聚合函数>having

猜你喜欢

转载自blog.csdn.net/weixin_64939936/article/details/131775336