一、表名和字段
–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号,学生姓名,出生年月,学生性别
–2. 课程表 course (c_id,c_name,t_id) –课程编号,课程名称,教师编号
–3. 教师表 teacher (t_id,t_name) –教师编号,教师姓名
–4. 成绩表 score (s_id,c_id,s_score) –学生编号,课程编号,分数
具体详情看 Python 之 MySql 每日一练 00
二、Mysql 题目
查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
三、Mysql 分析
1、说到平均成绩,我们想到聚合函数 AVG(col)
>>> 聚合函数扩展
● AVG(col) 返回指定列的平均值
● COUNT(col) 返回指定列中非 NULL 值的个数
● MIN(col) 返回指定列的最小值
● MAX(col) 返回指定列的最大值
● SUM(col) 返回指定列的所有值之和
● GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果
2、由题意可知,需要用到分组,来展示学生编号、姓名和平均成绩
常见的搭配:group by ... having
● 位置
从 sql 语句上而言,where 是写在 group by 前的,而 having 是在 group by 后的
● where 和 having 的区别
where 是分组前再过滤数据
having 是分组后再过滤数据
四、Mysql 方案
● sql 语句:
● sql 结果: