SELECT s.sdept, c.cname, AVG(sc.grade) AS 平均成绩 FROM S s, SC sc WHERE s.sno = sc.cno GROUP BY s .sdept, c.cname
时间: 2023-06-10 12:06:35 浏览: 75
这是一条 SQL 查询语句,作用是查询每个学院的每门课程的平均成绩。具体解释如下:
- SELECT s.sdept, c.cname, AVG(sc.grade) AS 平均成绩:选择学院、课程名和平均成绩三个字段,并使用 AVG() 函数计算平均成绩,将结果命名为“平均成绩”。
- FROM S s, SC sc:从 S 表和 SC 表中获取数据,这两个表中都包含学生信息和成绩信息。
- WHERE s.sno = sc.cno:通过 s.sno 和 sc.cno 字段的关联条件,将 S 表和 SC 表中的数据进行连接。
- GROUP BY s.sdept, c.cname:按照学院和课程名进行分组,以便统计每个学院每门课程的平均成绩。
相关问题
student(sno,sname,sage,ssex,sdept) course(cno,cname,credit,ctime) sc(sno,cno,,grade) 1 根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩 3 利用视图,查询平均成绩最高的学生。
1. 创建视图:
```
CREATE VIEW course_stats AS
SELECT c.cname, COUNT(s.sno) AS num_students, AVG(sc.grade) AS avg_grade
FROM course c
LEFT JOIN sc ON c.cno = sc.cno
LEFT JOIN student s ON s.sno = sc.sno
GROUP BY c.cno, c.cname;
```
2. 查询平均成绩最高的学生:
```
SELECT s.sno, s.sname, AVG(sc.grade) AS avg_grade
FROM student s
LEFT JOIN sc ON s.sno = sc.sno
WHERE s.sno IN (
SELECT sno
FROM sc
WHERE cno IN (
SELECT cno
FROM course_stats
WHERE avg_grade = (
SELECT MAX(avg_grade)
FROM course_stats
)
)
)
GROUP BY s.sno, s.sname
ORDER BY AVG(sc.grade) DESC
LIMIT 1;
```
注意:这里使用了子查询和嵌套查询,可以根据实际情况对查询进行优化。
按要求完成视图设计与创建实验任务在 student 数据库中,以student 、course 和 sc 表为基础完成下列视图的设计与创建.表结构如下: student(sno,sname,sdept,sex,sage)sc(sno,cno,grade) cource(cno,cname,credit,th)(1)创建学生的基本情况视图 V STUO (2)创建视图 V Sco,显示学生成绩信息。 (3)创建视图 V SCORE, 要求只显示学生的学号、姓名、系别、课号、课程名称及成绩各系学生人数、平均年龄创建视图 V NUM AVG。
根据要求,我们可以设计和创建以下三个视图:
1. 创建学生的基本情况视图 V_STUO:
```sql
CREATE VIEW V_STUO AS
SELECT sno, sname, sdept, sex, sage
FROM student;
```
2. 创建视图 V_Sco,显示学生成绩信息:
```sql
CREATE VIEW V_Sco AS
SELECT s.sno, s.sname, c.cno, c.cname, sc.grade
FROM student s, course c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno;
```
3. 创建视图 V_SCORE,要求只显示学生的学号、姓名、系别、课号、课程名称及成绩,以及各系学生人数、平均年龄:
```sql
CREATE VIEW V_SCORE AS
SELECT s.sno, s.sname, s.sdept, c.cno, c.cname, sc.grade,
COUNT(s.sno) OVER (PARTITION BY s.sdept) AS dept_student_count,
AVG(s.sage) OVER (PARTITION BY s.sdept) AS dept_avg_age
FROM student s, course c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno;
```
以上三个视图的创建语句已经完成,您可以在数据库中执行这些语句来创建对应的视图。