第六章:数据分组

一、分组

group by

  • 按照字段分组,相同字段数据被放到同一个组内
  • 分组目的是为了配合聚合函数使用
格式一:
select 字段1,字段2 聚合函数 from 表名 group by字段1,字段2;

格式二:
select 字段1,字段2 聚合函数 from 表名 where 条件 group by字段1,字段2;
例子
-- 查询表中男女各有多少人数
select count(sex),sex from students group by sex;

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

 

练习

-- 查询表中各个年龄同学数量
select age,count(*) from students group by age;

-- 查询表中2班和4班女生各有多少人数
select class,count(sex),sex from students where 
(class = '2班' or class = '4班') and sex = '女'group by class;

-- 数据分组,统计统计各个班级学生总数,最大、最小、平均年龄,
select class,count(*),max(age),min(age),avg(age) 
from students group by class ;

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

  • where > group by > order by
select 字段, 聚合函数 from 表名 
where 条件 group by 字段 order by 字段;

/* 例子
数据分组,统计统计各个班级学生总数,最大、最小、平均年龄*/
select class,count(*),max(age),min(age),avg(age) 
from students 
where not class = '3班'  group by class order By class desc;

二、分组后进行筛选

having与where区别

  • where条件 是先筛选统计,在统计结果中分组
  • having 是先分组统计,在统计结果中筛选
  • 必须出现 group by 后面
语法
select * from 表名 group by 字段 having 条件

例子:
-- 用having查询男生总数
select count(*) from students group by sex having sex ='男';

having配合聚合函数使用

  • where后面不能使用聚合函数,having后面能使用聚合函数
-- 用having班级人数大于3人的班级
select class from students group by class having count(*)> 3;

-- 班级总人数大于2的人班级名称、班级对应人数
select class,count(*) from students 
group by class having count(*)> 2;

-- 查询平均年龄大于30班级名称、班级总人数
select class,count(*) from students 
group by class having avg(age)> 30;

-- 查询4班和2班男女人数各多少
-- 方式一:
select class,sex,count(*) from students 
GROUP BY class, sex having class = '4班' or class = '2班';
-- 方式二:
select  class,sex,count(*) from students 
where class = '4班' or class = '2班' group by class,sex;

相关推荐

  1. (CDA数据分析师笔记) 业务分析方法

    2024-06-06 13:44:03       22 阅读
  2. Docker : Docker 数据管理

    2024-06-06 13:44:03       46 阅读
  3. (CDA数据分析师笔记) 业务分析方法五

    2024-06-06 13:44:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 13:44:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 13:44:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 13:44:03       82 阅读
  4. Python语言-面向对象

    2024-06-06 13:44:03       91 阅读

热门阅读

  1. 【数据库系统概论】事务

    2024-06-06 13:44:03       30 阅读
  2. 小程序怎样进行本地存储的读、写、删、清?

    2024-06-06 13:44:03       27 阅读
  3. 【Python】常见的生成随机数的方法

    2024-06-06 13:44:03       27 阅读
  4. 关于Apache Tomcat请求走私漏洞(CVE-2023-46589)

    2024-06-06 13:44:03       22 阅读
  5. Ubuntu系统设置Redis与MySQL登录密码

    2024-06-06 13:44:03       22 阅读
  6. Redis到底是AP还是CP?

    2024-06-06 13:44:03       29 阅读
  7. Redis集群方案有哪些?

    2024-06-06 13:44:03       31 阅读
  8. qt 画多边形,可以拖拽

    2024-06-06 13:44:03       23 阅读
  9. springboot针对返回的response拦截处理越权问题

    2024-06-06 13:44:03       27 阅读
  10. (2)空速传感器

    2024-06-06 13:44:03       32 阅读
  11. ubuntu 22.04 整机灾备方案

    2024-06-06 13:44:03       24 阅读
  12. TypeScript基础语法和使用规则+对象初始化

    2024-06-06 13:44:03       27 阅读
  13. PgMP考试结束后多久出成绩?附成绩查询方法

    2024-06-06 13:44:03       24 阅读
  14. 探索人工智能生成模型:从GPT到多模态AI

    2024-06-06 13:44:03       27 阅读