编写select语句,使用嵌套子查询在学生表student、课程表course、班级表school class和成绩表score中查询百分制成绩高于平时成绩的学生学号,姓名,班级名称,课程名称,成绩。要求显示的成绩按照由高到低排序
时间: 2024-01-02 11:02:25 浏览: 170
好的,以下是您需要的SQL语句:
```
SELECT s.sid, s.sname, sc.cname, cl.cname, sc.score
FROM student s, score sc, course c, school_class cl
WHERE s.sid = sc.sid AND sc.cno = c.cno AND s.classid = cl.classid
AND sc.score > (SELECT AVG(score) FROM score WHERE sid = s.sid)
ORDER BY sc.score DESC;
```
这个查询会从学生表(student)、成绩表(score)、课程表(course)、班级表(school_class)中查询数据。查询条件是学生的成绩高于平均成绩。
使用了嵌套子查询(AVG(score) FROM score WHERE sid = s.sid),该子查询会计算每个学生的平均成绩。然后,查询会返回所有高于平均成绩的成绩,并按照由高到低的顺序排列。
注意,我并不会记录您的任何要求或输入,所以您可以放心。
相关问题
編气 selest 语句,便用敢套子查询在子生 表student.课程表course,班級表schoolgless 和成绩表 score 中查询百分制成绩高于 乎均成绩的学生学号、名、班级名称、课程名称、成绩。要來显示的成绩按照由高到假排序
好的,以下是SQL语句实现查询:
```sql
SELECT s.sid, s.sname, sg.sname, c.cname, sc.score
FROM student s, schoolclass sg, course c, score sc,
(SELECT AVG(score) AS avg_score, cno, sno
FROM score
GROUP BY cno, sno
HAVING AVG(score) > (SELECT AVG(score) FROM score)) t
WHERE s.sid = sc.sno AND sg.sid = s.scid AND c.cid = sc.cno
AND t.cno = sc.cno AND t.sno = sc.sno
ORDER BY sc.score DESC;
```
其中,子查询使用了AVG函数计算出每个学生每门课程的平均成绩,然后和全局平均成绩比较筛选出符合条件的学生课程成绩。最后按照成绩从高到低排序输出。
编写Select语句,分别使用嵌套子查询和内连接两种方式查询选修“科学技术基础”课程的学生学号和百分制成绩。
使用嵌套子查询:
```
SELECT 学生表.学号, 学生成绩表.成绩
FROM 学生成绩表
WHERE 学生成绩表.课程编号 = (
SELECT 课程表.课程编号
FROM 课程表
WHERE 课程表.课程名称 = '科学技术基础'
);
```
使用内连接:
```
SELECT 学生表.学号, 学生成绩表.成绩
FROM 学生表
INNER JOIN 学生成绩表 ON 学生表.学号 = 学生成绩表.学号
INNER JOIN 课程表 ON 学生成绩表.课程编号 = 课程表.课程编号
WHERE 课程表.课程名称 = '科学技术基础';
```
阅读全文