第六章:数据分组

一、分组

group by

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

格式二:
select 字段1,字段2 聚合函数 from 表名 where 条件 group by字段1,字段2;
sql 复制代码
例子
-- 查询表中男女各有多少人数
select count(sex),sex from students group by sex;
sql 复制代码
-- 查询一班男女生数量
select sex,count(*) from students where class ='1班' group by sex;

练习

sql 复制代码
-- 查询表中各个年龄同学数量
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
sql 复制代码
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 后面
sql 复制代码
语法
select * from 表名 group by 字段 having 条件

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

having配合聚合函数使用

  • where后面不能使用聚合函数,having后面能使用聚合函数
sql 复制代码
-- 用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;
相关推荐
坊钰3 分钟前
【LangChain框架入门级】10. 文本向量与向量数据库(Embedding / Redis / Pinecone / MMR)
数据库·python·langchain·embedding
2601_9603563812 分钟前
2027零售商品计划岗能力拆解:统计学、SQL、Excel与业务指标怎么结合
sql·excel·零售
Omics Pro14 分钟前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
好奇的菜鸟18 分钟前
GORM 入门(二):从 database/sql 平滑过渡到 GORM
数据库·sql
长春的KAKA31 分钟前
GitLab 项目页面报 500 错误的完整修复记录:PostgreSQL 数据库损坏、统计表缺失及数据库迁移
数据库·postgresql·gitlab
这个DBA有点耶44 分钟前
关系数据库管理系统选型指南:四步决策框架与主流产品技术路线对比
数据库·sql·程序人生·mysql·database·dba
jason.zeng@15022071 小时前
(七)「固化 Rest 接口 + Text-to-SQL 灵活查询」双模式 Agent 架构教程
数据库·python·sql·ai·架构·langchain·ai编程
我不会起名字3222 小时前
MVCC 快照读为什么读不到刚提交的数据:ReadView 的 4 条可见性规则
数据库·mysql·innodb·mvcc·事务隔离
2501_933670792 小时前
2027届数据类专业投用户增长岗:A/B实验、指标和SQL准备思路
数据库·sql
用户337922545682 小时前
Sirchmunk 深度解析(一):一个无需向量数据库的自进化搜索引擎架构设计
数据库