请写SQL,查询002课程分数大于50分的人的姓名学号所有课程课程学分,且按课程学分正序排序
时间: 2023-12-28 11:06:00 浏览: 55
假设表名为 `scores`,包含字段 `course_no`、`score`、`stu_no`,另外还有一张 `courses` 表,包含字段 `course_no` 和 `credit`,以及一张 `students` 表,包含字段 `stu_no` 和 `stu_name`,则 SQL 查询语句如下:
```
SELECT students.stu_no, students.stu_name, courses.course_no, courses.credit
FROM scores
INNER JOIN courses ON scores.course_no = courses.course_no
INNER JOIN students ON scores.stu_no = students.stu_no
WHERE scores.course_no = '002' AND scores.score > 50
ORDER BY courses.credit ASC;
```
解释一下:
1. 首先通过 `INNER JOIN` 对 `scores` 表、`courses` 表和 `students` 表进行关联,`scores.course_no = courses.course_no` 表示课程编号相同,`scores.stu_no = students.stu_no` 表示学号相同。
2. 然后在 `WHERE` 子句中筛选出课程编号为 `002` 且分数大于 `50` 的记录。
3. 最后按照课程学分 `courses.credit` 进行升序排序。
相关问题
查询所选课程总学分最高的学生信息,显示学号、姓名和总学分
好的,你的问题是查询所选课程总学分最高的学生信息,显示学号、姓名和总学分。下面是 SQL 语句实现:
```
SELECT s.student_id, s.student_name, SUM(c.credit) AS total_credit
FROM student s, course c, score sc
WHERE s.student_id = sc.student_id
AND c.course_id = sc.course_id
GROUP BY s.student_id, s.student_name
ORDER BY total_credit DESC
LIMIT 1;
```
这个 SQL 语句中,我们对三个表进行了联结,使用了 GROUP BY 子句进行分组,并使用了 SUM 聚合函数来计算每个学生的总学分。我们按照总学分降序排列,并且使用 LIMIT 子句只取第一条记录。最后我们选择显示学号、姓名和总学分。
mysql 查询选修了全部学分大于4的课程的学生的学号
可以使用如下 SQL 查询语句:
SELECT DISTINCT sc.Sno
FROM sc
WHERE sc.Credit > 4
GROUP BY sc.Sno
HAVING SUM(sc.Grade) >= 60
这个查询语句可以找出所有选修了全部学分大于4的课程的学生的学号。需要注意的是,这个查询语句假设每门课程的学分相等,且及格分数为60分,如果不符合实际情况,需要进行相应的修改。