mysql复习第五天:分组筛选

本文深入探讨了SQL中分组查询(groupby)与筛选(having)的使用方法,包括如何按单个或多个字段进行分组,以及如何在分组后应用筛选条件。通过具体示例,如计算不同班级和性别的平均成绩,展示了分组和筛选在数据分析中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、分组查询 group by

  • 数据表:
    在这里插入图片描述
    在这里插入图片描述

select 列名 from 表 group by 要分组的列名

SELECT MAX(score),s_sex,s_name FROM Student GROUP BY s_sex;

在这里插入图片描述

select 分组函数,列(要求出现在group by的后面) from 表 [where 刷选条件] group by 分组列表 [order by 字句|别名|函数 ]

SELECT 
ROUND(AVG(s.score),1) AS '平均分',
c.classname 
FROM Student s,class c 
WHERE s.class_id = c.classid 
GROUP BY s.class_id 
ORDER BY '平均分';

在这里插入图片描述

1.1、按多个字段分组
SELECT 
ROUND(AVG(score),1) AS 'avgscore',
Class_id,
s_sex 
FROM Student 
GROUP BY Class_id,s_sex 
ORDER BY avgscore;

在这里插入图片描述

2、筛选

select 分组函数,列(要求出现在group by的后面) from 表 [where 刷选条件] group by 分组列表 [having > 筛选条件字句|别名|函数] [order by 字句|别名|函数 ]

SELECT 
ROUND(AVG(s.score),1) AS '平均分',
c.classname 
FROM 
Student s,class c 
WHERE s.class_id = c.classid 
GROUP BY s.class_id 
HAVING ROUND(AVG(s.score),1) > 80 
ORDER BY ROUND(AVG(s.score),1) ;

在这里插入图片描述

数据源位置关键字
分组前刷选原始表group by字句的前面where
分组后刷选分组后的结果集group by字句的后面having
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值