龙空技术网

Python 之 MySql 每日一练 04

young十三 296

前言:

现在看官们对“mysql求平均分”大概比较关切,兄弟们都想要剖析一些“mysql求平均分”的相关文章。那么小编在网摘上搜集了一些关于“mysql求平均分””的相关知识,希望你们能喜欢,朋友们快快来了解一下吧!


一、表名和字段

–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 是分组后再过滤数据

3、由于要包括有成绩的和无成绩的,需要用 union 合并 group by 的数据

union 会去除重复结果列 ,如果不想去重可以用 union all。

四、Mysql 方案

● sql 语句:

● sql 结果:

>>>Python 之 MySql 每日一练 03

标签: #mysql求平均分