求选修数学课且成绩为90分以上的学生学号、姓名、及成绩。
时间: 2023-08-12 07:04:33 浏览: 332
假设有三张表:学生表(students)、课程表(courses)和成绩表(scores),其中数学课的课程编号为"001",则可以使用以下 SQL 语句查询选修数学课且成绩为90分以上的学生学号、姓名、及成绩:
```
SELECT
students.student_id,
students.student_name,
scores.score
FROM
students
INNER JOIN scores ON students.student_id = scores.student_id
INNER JOIN courses ON scores.course_id = courses.course_id
WHERE
courses.course_id = '001' AND scores.score >= 90;
```
其中,使用 INNER JOIN 连接三张表,将学生表、成绩表和课程表进行关联,再用 WHERE 子句筛选出选修数学课且成绩为90分以上的记录,最后用 SELECT 子句选择需要查询的字段,即可得到学生的学号、姓名、及成绩。
相关问题
sql 根据s、c和sc表完成如下查询: s(sno,sname,age,sex,sdept,major) c(cno,cnamecpo,teacher,credit) sc(sno,cno,grade) 1要求用子查询完成 (1)查询选修了课程“C01”的学生的姓名和所在系。 (2)查询数学系成绩在80分以上的学生的学号,姓名。 2查询每个学生的情况以及他(她)所选修的课程。 3求学生的学号、姓名、选修的课程名及成绩。 4求选修数学课且成绩为90分以上的学生学号、姓名、及成 绩。 5查询每
1.
(1) SELECT s.sname, s.sdept FROM s WHERE s.sno IN (SELECT sc.sno FROM sc WHERE sc.cno = 'C01');
(2) SELECT s.sno, s.sname FROM s WHERE s.sdept = '数学系' AND s.sno IN (SELECT sc.sno FROM sc WHERE sc.grade >= 80);
2. SELECT s.sno, s.sname, s.age, s.sex, s.sdept, s.major, c.cname FROM s LEFT JOIN sc ON s.sno = sc.sno LEFT JOIN c ON sc.cno = c.cno;
3. SELECT s.sno, s.sname, c.cname, sc.grade FROM s LEFT JOIN sc ON s.sno = sc.sno LEFT JOIN c ON sc.cno = c.cno;
4. SELECT s.sno, s.sname, sc.grade FROM s LEFT JOIN sc ON s.sno = sc.sno WHERE sc.grade >= 90 AND sc.cno IN (SELECT cno FROM c WHERE cname = '数学');
5. SELECT s.sno, s.sname, COUNT(sc.cno) AS course_num FROM s LEFT JOIN sc ON s.sno = sc.sno WHERE sc.cno IN (SELECT cno FROM c WHERE cname = '数学') GROUP BY s.sno, s.sname;
11查询选修了“C02”的学生的姓名和所在系。 12 查询成绩在80分以上的学生的姓名,课程号和成绩并按成绩的降序排列。 13 查询哪些课程没有人选修,要求列出课程号和课程名。14 查询缺少了成绩的学生的学号和课程号。 15查询数学系学生的学号和姓名。 16 查询选修了课程的学生学号 17 查询选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。 18查询选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 19 查询数学系或计算机系姓刘的学生的信息。
11. 查询选修了“C02”的学生的姓名和所在系。
```sql
SELECT s.name, d.name
FROM student s, department d, course c, sc
WHERE s.sdept = d.did AND s.sno = sc.sno AND c.cno = sc.cno AND c.cname = 'C02';
```
12. 查询成绩在80分以上的学生的姓名,课程号和成绩并按成绩的降序排列。
```sql
SELECT s.name, sc.cno, sc.grade
FROM student s, sc
WHERE s.sno = sc.sno AND sc.grade >= 80
ORDER BY sc.grade DESC;
```
13. 查询哪些课程没有人选修,要求列出课程号和课程名。
```sql
SELECT c.cno, c.cname
FROM course c
WHERE NOT EXISTS (SELECT * FROM sc WHERE c.cno = sc.cno);
```
14. 查询缺少了成绩的学生的学号和课程号。
```sql
SELECT sc.sno, sc.cno
FROM sc
WHERE sc.grade IS NULL;
```
15. 查询数学系学生的学号和姓名。
```sql
SELECT s.sno, s.name
FROM student s, department d
WHERE s.sdept = d.did AND d.name = '数学系';
```
16. 查询选修了课程的学生学号。
```sql
SELECT DISTINCT sc.sno
FROM sc;
```
17. 查询选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
```sql
SELECT sc.sno, sc.grade
FROM student s, course c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno AND c.cname LIKE '%数学%'
ORDER BY sc.grade DESC, sc.sno ASC;
```
18. 查询选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。
```sql
SELECT sc.sno, sc.grade * 0.8 AS grade
FROM student s, course c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno AND c.cname LIKE '%数学%' AND sc.grade BETWEEN 80 AND 90;
```
19. 查询数学系或计算机系姓刘的学生的信息。
```sql
SELECT s.*
FROM student s, department d
WHERE s.sdept = d.did AND (d.name = '数学系' OR d.name = '计算机系') AND s.name LIKE '刘%';
```
阅读全文
相关推荐














