8、建立一个名为v_stu_d的视图,视图包括每门课程的最高分,最低分,平均分,并查询该视图信息
时间: 2024-05-10 12:20:03 浏览: 70
创建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;
```
相关问题
定义一个查询学生的学号 姓名 学期 最高成绩 最低成绩 平均成绩的视图studentScore
创建一个名为`studentScore`的视图,用于显示学生的相关信息,包括学号(`stu_id`)、姓名(`name`)、学期(`term`)、最高成绩(`max_score`)、最低成绩(`min_score`)以及平均成绩(`avg_score`),可以按照以下SQL语句定义:
```sql
CREATE VIEW studentScore AS
SELECT
s.stu_id,
s.name,
s.term,
MAX(sc.score) as max_score,
MIN(sc.score) as min_score,
(AVG(sc.score)) over (PARTITION BY s.stu_id) as avg_score
FROM
students s
JOIN
scores sc ON s.stu_id = sc.student_id;
```
这个视图假设有两个表存在:`students`存储学生信息,包含字段如`stu_id`和`name`;`scores`保存成绩数据,关联学生ID(`student_id`)。通过JOIN操作将这两个表连接在一起,并计算每个学生的最高分、最低分和平均分。
通过视图studentscore查询最高成绩在90分及以上且没有不及格成绩的学生的学号 姓名 院系名称 班级
为了查询最高成绩达到90分及以上并且所有成绩都不低于60分(假设不及格标准为60分)的学生的信息,我们需要首先确认视图`studentScore`是否包含了所有的必要字段,比如院系(`dept_name`)和班级(`class`). 假设这些信息也在`students`表中,你可以使用以下SQL语句:
```sql
SELECT
stu_id,
name,
dept_name,
class
FROM
(
SELECT
stu_id,
name,
dept_name,
class,
MAX(max_score) as highest_score
FROM
studentScore
WHERE
max_score >= 90 AND min_score >= 60
GROUP BY
stu_id, name, dept_name, class
HAVING
COUNT(*) = (SELECT COUNT(*) FROM scores WHERE student_id = studentScore.stu_id)
) high_scores
JOIN
students s ON high_scores.stu_id = s.stu_id;
```
这里我们首先筛选出满足条件的学生,然后确保他们的最高成绩确实是他们的全部成绩。接着再将结果与原始的学生表进行JOIN。
阅读全文