mysql查询“C语言程序设计”课程分数大于该课程平均分数的学生的学号、姓名和分数信息在两个表里一个grade一个curriculum
时间: 2024-06-04 14:11:50 浏览: 17
SELECT g.id, g.name, g.score
FROM grade g, curriculum c
WHERE g.course = c.course_name
AND c.course_name = 'C语言程序设计'
AND g.score > (SELECT AVG(score) FROM grade WHERE course = 'C语言程序设计')
相关问题
mysql查询“C语言程序设计”课程分数大于该课程平均分数的学生的学号、姓名和分数信息在三个表里一个grade一个curriculum一个student
可以使用如下的SQL语句:
SELECT s.id, s.name, g.score
FROM student s
INNER JOIN grade g ON s.id = g.student_id
INNER JOIN curriculum c ON g.curriculum_id = c.id
WHERE c.name = 'C语言程序设计' AND g.score > (
SELECT AVG(g2.score)
FROM grade g2
INNER JOIN curriculum c2 ON g2.curriculum_id = c2.id
WHERE c2.name = 'C语言程序设计'
)
ORDER BY s.id;
解释:
- 首先使用INNER JOIN将三个表连接起来,其中student表和grade表通过学生的id关联,grade表和curriculum表通过课程的id关联;
- 然后使用WHERE子句筛选出课程名称为“C语言程序设计”的记录,并使用子查询计算出该课程的平均分数,并将平均分数与学生的分数进行比较;
- 最后使用ORDER BY子句按照学生的id升序排序。
MySQL创建一个带输入参数得存储过程,输入分数参数,执行存储工程得到平均分大于该分数的学生统计成绩信息(包括学号,姓名,平均分,课程门数字段)
以下是一个创建带输入参数的MySQL存储过程的示例,该存储过程会返回平均分大于指定分数的学生统计成绩信息:
```sql
CREATE PROCEDURE `GetStudentStats`(IN min_score INT)
BEGIN
SELECT s.student_id, s.student_name, COUNT(DISTINCT sc.course_id) AS num_courses, AVG(sc.score) AS avg_score
FROM students s
INNER JOIN scores sc ON s.student_id = sc.student_id
GROUP BY s.student_id
HAVING AVG(sc.score) > min_score;
END
```
在这个存储过程中,我们定义了一个输入参数 `min_score`,它表示最低平均分数。存储过程内部使用了两个表 `students` 和 `scores`,其中 `students` 表包含了学生的信息(学号和姓名),`scores` 表包含了每个学生所选的所有课程的成绩信息(学号、课程号和成绩)。
在存储过程中,我们使用了一个内连接将这两个表连接起来,并通过 `GROUP BY` 子句将结果按学生进行分组。然后,我们使用 `AVG` 函数计算每个学生的平均分数,并使用 `HAVING` 子句过滤出平均分数大于指定分数的学生。最后,我们返回学生的学号、姓名、选课门数和平均分数。
要执行这个存储过程,可以使用以下代码:
```sql
CALL GetStudentStats(80);
```
这将返回平均分数大于80分的学生统计成绩信息。你可以根据需要调整输入参数的值。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)