利用sql语言为表 sc 创建一个视图 s_grade(sno,sname,cou_cnt,avg_grade,fail_cnt),包括有各个学生学号、 姓名、选修课程的门数、平均分及不及格门数。
时间: 2023-06-09 08:06:27 浏览: 205
好的,以下是用SQL语言为表sc创建s_grade视图的查询语句:
```
CREATE VIEW s_grade AS
SELECT s.sno, s.sname, COUNT(sc.cno) AS cou_cnt, AVG(sc.grade) AS avg_grade,
COUNT(CASE WHEN sc.grade < 60 THEN 1 END) AS fail_cnt
FROM student s, sc
WHERE s.sno = sc.sno
GROUP BY s.sno, s.sname;
```
以上查询语句会将学生表(student)和选课表(sc)联合起来,按照学生的学号和姓名对选修课程进行统计,包括选修的课程门数、平均分及不及格课程门数,最终生成一个名为s_grade的视图。
相关问题
为表 sc创建一个视图s_grade(sno,sname,cou_cnt,avg_grade,fail_cnt),包括有各个学生学号、姓名、选修课程的门数、平均分及不及格门数。
创建视图的 SQL 语句如下:
```sql
CREATE VIEW s_grade AS
SELECT
sc.sno,
s.sname,
COUNT(DISTINCT sc.cno) AS cou_cnt,
AVG(sc.grade) AS avg_grade,
SUM(CASE WHEN sc.grade < 60 THEN 1 ELSE 0 END) AS fail_cnt
FROM
sc
JOIN student s ON sc.sno = s.sno
GROUP BY
sc.sno,
s.sname;
```
解释:
1. 创建视图的语法:`CREATE VIEW 视图名 AS SELECT 语句`。
2. 在 SELECT 语句中,我们需要从 sc 表中查询学生的学号和成绩,以及从 student 表中查询学生的姓名。
3. 使用 JOIN 连接 sc 表和 student 表,通过学号进行关联。
4. 聚合函数 COUNT 和 AVG 分别用于计算每个学生选修课程的门数和平均分。
5. 使用 SUM 函数结合 CASE 表达式计算每个学生不及格的课程数量。
6. 最后,使用 GROUP BY 子句按照学号和姓名进行分组,确保每个学生只出现一次。
学生表:S(Sno,Sname,Sex,Sage, Sdept) 课程表:C(Cno,Cname,Ccredit)Ccredit 学生选课表:SC(Sno,Cno,Grade) 建立由学号和平均成绩两个字段组成的视图 student_gr,并且平均成绩88以上。 (全部小写) create___student_gr _______select sno,avg(grade) from sc group by _ having avg(grade)>88;
好的,以下是我给出的回答:
create view student_gr as select sno,avg(grade) from sc group by sno having avg(grade)>88;
这是一个用于创建视图 student_gr 的 SQL 语句,它会从 SC 表中选取学号和成绩,然后按照学号进行分组,并计算每个学生的平均成绩。最后,只有平均成绩大于 88 的学生才会被包含在视图中。
阅读全文