8、建立一个名为v_stu_d的视图,视图包括每门课程的最高分,最低分,平均分,并查询该视图信息
时间: 2024-05-10 20:20:03 浏览: 8
创建v_stu_d视图:
```
CREATE VIEW v_stu_d AS
SELECT score.course_id,
MAX(score.score) AS max_score,
MIN(score.score) AS min_score,
AVG(score.score) AS avg_score
FROM score
GROUP BY score.course_id;
```
查询v_stu_d视图信息:
```
SELECT * FROM v_stu_d;
```
相关问题
基于 student_info 表、curriculum 表和 grade 表,建立一个名为 v_stu_g 的视图,视图包括所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g 查询学号为 0001 的学生的课程平均分
首先,我们需要连接三个表,然后选取学号、姓名、课程名称和分数四个字段,命名为 v_stu_g 视图:
```
CREATE VIEW v_stu_g AS
SELECT student_info.student_id, student_info.name, curriculum.course_name, grade.score
FROM student_info
JOIN grade ON student_info.student_id = grade.student_id
JOIN curriculum ON grade.course_id = curriculum.course_id;
```
接下来,我们可以使用下面的 SQL 查询语句来查询学号为 0001 的学生的课程平均分:
```
SELECT AVG(score)
FROM v_stu_g
WHERE student_id = '0001';
```
这条 SQL 查询语句会从 v_stu_g 视图中选取学号为 0001 的学生的所有分数,然后计算平均分。
在学生选课数据库中新建一个名为stu_view2的视图,该视图可以用来查看每个学生选修课程的门数和平均成绩;
可以使用以下 SQL 语句创建名为stu_view2的视图:
```
CREATE VIEW stu_view2 AS
SELECT s.id AS stu_id, COUNT(e.course_id) AS course_num, AVG(e.grade) AS avg_grade
FROM students s
LEFT JOIN enrollments e ON s.id = e.student_id
GROUP BY s.id;
```
上述 SQL 语句中,首先使用 LEFT JOIN 将学生表(students)和选课表(enrollments)连接起来,以便查询每个学生选修的课程信息。然后使用 COUNT 函数统计每个学生选修的课程门数,使用 AVG 函数计算每个学生的平均成绩。最后使用 GROUP BY 将结果按照学生 id 分组。
通过创建这个视图,可以方便地查看每个学生选修课程的门数和平均成绩,避免了重复的查询操作。例如,可以使用以下 SQL 语句查询学生 id 为1的选课信息:
```
SELECT *
FROM stu_view2
WHERE stu_id = 1;
```
查询结果将显示学生 id 为1的选修课程门数和平均成绩。