• 第六章:数据分组


    一、分组

    group by

    • 按照字段分组,相同字段数据被放到同一个组内
    • 分组目的是为了配合聚合函数使用
    1. 格式一:
    2. select 字段1,字段2 聚合函数 from 表名 group by字段1,字段2;
    3. 格式二:
    4. select 字段1,字段2 聚合函数 from 表名 where 条件 group by字段1,字段2;
    1. 例子
    2. -- 查询表中男女各有多少人数
    3. select count(sex),sex from students group by sex;

    1. -- 查询一班男女生数量
    2. select sex,count(*) from students where class ='1班' group by sex;

     

    练习

    1. -- 查询表中各个年龄同学数量
    2. select age,count(*) from students group by age;
    3. -- 查询表中2班和4班女生各有多少人数
    4. select class,count(sex),sex from students where
    5. (class = '2班' or class = '4班') and sex = '女'group by class;
    6. -- 数据分组,统计统计各个班级学生总数,最大、最小、平均年龄,
    7. select class,count(*),max(age),min(age),avg(age)
    8. from students group by class ;

     where&group by &order by 同时出现使用顺序

    • where > group by > order by
    1. select 字段, 聚合函数 from 表名
    2. where 条件 group by 字段 order by 字段;
    3. /* 例子
    4. 数据分组,统计统计各个班级学生总数,最大、最小、平均年龄*/
    5. select class,count(*),max(age),min(age),avg(age)
    6. from students
    7. where not class = '3班' group by class order By class desc;

    二、分组后进行筛选

    having与where区别

    • where条件 是先筛选统计,在统计结果中分组
    • having 是先分组统计,在统计结果中筛选
    • 必须出现 group by 后面
    1. 语法
    2. select * from 表名 group by 字段 having 条件
    3. 例子:
    4. -- 用having查询男生总数
    5. select count(*) from students group by sex having sex ='男';

    having配合聚合函数使用

    • where后面不能使用聚合函数,having后面能使用聚合函数
    1. -- 用having班级人数大于3人的班级
    2. select class from students group by class having count(*)> 3;
    3. -- 班级总人数大于2的人班级名称、班级对应人数
    4. select class,count(*) from students
    5. group by class having count(*)> 2;
    6. -- 查询平均年龄大于30班级名称、班级总人数
    7. select class,count(*) from students
    8. group by class having avg(age)> 30;
    9. -- 查询4班和2班男女人数各多少
    10. -- 方式一:
    11. select class,sex,count(*) from students
    12. GROUP BY class, sex having class = '4班' or class = '2班';
    13. -- 方式二:
    14. select class,sex,count(*) from students
    15. where class = '4班' or class = '2班' group by class,sex;

    having&group by &order by&limt 同时出现使用顺序

    group by > having > order by > limit

     

  • 相关阅读:
    大数据随记 —— RDD 的创建
    浅谈Oracle数据库调优(2)
    Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度
    电力系统强大的Gurobi 求解器的学习(Python&Matlab)
    新零售复购分析,简单 3 步抓住回头客
    Java后端 - 一面凉经 - 得物(国际电商)
    【毕业设计】22-基于单片机的智能温度计的系统设计(原理图工程+仿真工程+源代码+仿真视频+答辩论文+答辩PPT)
    About 9.25 This Week
    90---Python 直角坐标系下绘制椭圆形
    npm运行vue项目出现禁止运行脚本
  • 原文地址:https://blog.csdn.net/qq_64388558/article/details/139471335