创建视图,视图内容为每门课程课程号,课程名,选课人数,平均成绩,并按平均成绩降序排序
时间: 2023-12-02 20:06:26 浏览: 208
好的,您可以使用以下 SQL 语句创建视图:
```
CREATE VIEW course_view AS
SELECT
course.cno AS 课程号,
course.cname AS 课程名,
COUNT(score.sno) AS 选课人数,
AVG(score.degree) AS 平均成绩
FROM
course
LEFT JOIN score ON course.cno = score.cno
GROUP BY
course.cno,
course.cname
ORDER BY
AVG(score.degree) DESC;
```
这个视图将会返回每门课程的课程号,课程名,选课人数和平均成绩,并且按照平均成绩降序排序。请注意,如果某门课程没有人选,它仍然会出现在结果中,但是选课人数和平均成绩都将为 NULL。
相关问题
在选课管理数据库中,如何创建一个名为View2的视图,该视图应显示哪些字段(如学号、姓名、最高分、最低分和平均分),并且数据需按照学号以降序的方式进行排序?
在选课管理数据库中,如果已经有包含学生个人信息、课程成绩等数据的表,例如`Students`(存储学号和姓名)、`Scores`(存储学号、课程名和成绩)等,我们可以创建一个名为`View2`的视图,展示学号、姓名、最高分、最低分和平均分。以下是创建这种视图的一般步骤和SQL语句示例:
首先,假设我们在`Scores`表中有`StudentID`和`Score`字段:
```sql
CREATE VIEW View2 AS
SELECT Students.StudentID AS '学号',
Students.Name AS '姓名',
MAX(Scores.Score) OVER (PARTITION BY Students.StudentID) AS '最高分',
MIN(Scores.Score) OVER (PARTITION BY Students.StudentID) AS '最低分',
AVG(Scores.Score) OVER (PARTITION BY Students.StudentID) AS '平均分'
FROM Students
JOIN Scores ON Students.StudentID = Scores.StudentID
ORDER BY Students.StudentID DESC;
```
上述SQL语句使用了窗口函数(Window Function),通过`OVER(PARTITION BY Students.StudentID)`对每个学生的成绩进行最大值、最小值和平均值计算。然后按学号进行降序排列。
阅读全文