右下角图片
2024-11 小猿搜题 入门

我发誓:每一道题目都不超过如下知识点。

如果超过了,就让凤姐和乔碧萝蹂躏我一百次。

SQL跟初中数学一样,记忆概念、用法是没卵用的。

能灵活应用才是王道。

====================================================================================================

任务:找出每个班级的学生人数,并按班级人数降序排列。

====================================================================================================

GROUP BY 知识点

1. 基本用法

  • GROUP BY column: 将结果集按照一个或多个列进行分组。
    • 示例:SELECT class_code, COUNT(student_id) FROM students GROUP BY class_code; 查找每个班级的学生人数。

2. 多列分组

  • GROUP BY column1, column2, ...: 按多个列进行分组。
    • 示例:SELECT grade_code, class_code, COUNT(student_id) FROM students GROUP BY grade_code, class_code; 查找每个年级和班级的学生人数。

3. 聚合函数

  • 常用聚合函数:
    • COUNT(column): 计算某列的行数。
    • SUM(column): 计算某列的总和。
    • AVG(column): 计算某列的平均值。
    • MIN(column): 找出某列的最小值。
    • MAX(column): 找出某列的最大值。
    • 示例:SELECT class_code, AVG(score) FROM scores GROUP BY class_code; 查找每个班级的平均分数。

4. HAVING 子句

  • HAVING condition: 在分组后的结果中应用条件过滤。
    • 示例:SELECT class_code, COUNT(student_id) FROM students GROUP BY class_code HAVING COUNT(student_id) > 10; 查找学生人数超过10人的班级。

5. 结合 ORDER BY

  • ORDER BY column: 对分组后的结果进行排序。
    • 示例:SELECT class_code, COUNT(student_id) FROM students GROUP BY class_code ORDER BY COUNT(student_id) DESC; 查找每个班级的学生人数,并按学生人数降序排列。

6. 注意事项

  • 选择列的限制:
    • 在 SELECT 子句中,除了聚合函数外,只能选择出现在 GROUP BY 子句中的列。
    • 示例:SELECT class_code, COUNT(student_id) FROM students GROUP BY class_code; 是有效的。
    • 示例:SELECT name, class_code, COUNT(student_id) FROM students GROUP BY class_code; 是无效的,因为 name 列不在 GROUP BY 子句中。

经典-学生表课程表 group by distinct count

students,学生表

student_id name class_code grade_code birth_date residence gender
100611 姜建华 C219 S3 2009-01-15 城镇 m
102890 韩辉 C223 S3 2009-10-26 农村 m
105684 李丽丽 C219 S3 2009-03-28 城镇 m
110591 李华 C223 S1 2008-05-31 农村 m
110611 王桂珍 C218 S3 2008-06-04 城镇 m

scores,成绩表

分数可能为Null

student_id subject score exam_date
358575 生物 29 2024-06-30
735011 语文 37 2024-03-30
597305 历史 67 2024-03-30
921856 数学 76 2024-04-27
455713 化学 77 2024-06-30

teachers,教师表

如第一行,赵娇娇教学C218、C219、C217三个班级的语文,是C217班的班主任

teacher_id name subject class_code head_teacher degree graduate_date(毕业日期) enter_date(入校日期) gender qualification(职称) fir_degr(第一学历) mst_degr(研究生学历)
t001 赵娇娇 语文 C218C219C217 C217 master 2010-06-30 2010-07-30 f Senior 北京大学 北京大学
t002 任伊乐 语文 C220C221C222C223C224 C220 master 2010-06-30 2010-07-30 f Senior 北京大学 清华大学
t003 李敏 数学 C218C219C217 C218 master 1994-06-30 1994-07-30 f Senior 北京大学 复旦大学
t004 吕敏 数学 C220C221C222 C221 phd 1995-06-30 1995-07-30 f Senior 北京大学 清华大学
t005 陈佳蔬 数学 C223C224 C223 master 2010-06-30 2010-07-30 f null 北京大学 北京大学

university,大学信息表 

name is_985 times_rnk(泰晤士2024全球排名)
King's College London 0 34
National University of Singapore,NUS 0 24
Singapore Polytechnic 0 null
上海交通大学 1 113
北京大学 1 16

class_code student_count
C222 54
C219 51
C220 47
C217 46
C223 44
C221 43
C218 35

ID33 表连接(3)一直使用一张表,现在开始两张表  
入门 group by distinct count 入门-闺蜜捉奸记 思扣SQLintern
ID106 统计每个用户使用过的不同车型数量
简单 group by distinct count 聚合函数 运力调度评估 滴滴出行
ID253 周杰伦的最受欢迎的专辑  
简单 group by inner join distinct count 聚合函数 多表连接 多列分组 音乐偏好分析 QQ音乐
ID311 计算每个用户的购买频率-天数(F)  
简单 group by distinct count 聚合函数 RFM模型 美团
ID336 用户的去重IP地址数量  
简单 group by distinct count > 聚合函数 数学运算符 异常用户监测 百度

 点击下方空白区域即可查看参考答案

MySQL 8.0

00:00