sql查询每门课程被选修最高分最低分
时间: 2023-07-13 20:27:47 浏览: 215
您好!针对您的问题,可以使用以下 SQL 语句查询每门课程被选修的最高分和最低分:
```
SELECT course_name, MAX(score) AS highest_score, MIN(score) AS lowest_score
FROM scores
GROUP BY course_name;
```
其中,`scores` 表是包含了所有学生选课成绩的表,包括了学生姓名、课程名称、成绩等信息。在这个表中,每一行记录代表了一个学生的一门课程的成绩情况。
以上 SQL 语句会将 `scores` 表按照课程名称进行分组,然后分别计算每组中的最高分和最低分,并将结果返回。其中 `MAX(score)` 表示求最高分,`MIN(score)` 表示求最低分。
相关问题
如何构造一个数据库视图来分别计算每门课程的最低分、平均分、最高分以及该课程的选修学生总数?
要构建一个数据库视图来同时计算每门课程的最低分、平均分、最高分以及选修的学生总数,首先需要设计一个包含课程ID、学生ID、分数等信息的表格。假设我们已经有了名为`course_enrollment`的视图,其中包含课程ID和选修该课程的学生ID。
你可以按照下面的方式来创建新的视图`course_summary`:
```sql
CREATE VIEW course_summary AS
SELECT
c.course_id,
MIN(sc.score) AS lowest_score,
AVG(sc.score) AS average_score,
MAX(sc.score) AS highest_score,
COUNT(DISTINCT sc.student_id) AS total_students
FROM
course_enrollment ce
JOIN
(SELECT course_id, score FROM course_scores) sc ON ce.course_id = sc.course_id
GROUP BY
c.course_id;
```
这个视图通过`JOIN`操作将`course_enrollment`和`course_scores`两个表连接起来,然后对每个课程ID进行分组,分别计算最小分(`MIN(sc.score)`)、平均分(`AVG(sc.score)`)、最大分(`MAX(sc.score)`)和学生总数(`COUNT(DISTINCT sc.student_id)`)。
对于教学数据库的三个基本表: Stdent(SNO,SNAME,AGE,SEX) SC(SNO,CNO,GRADE) Course(CNO,CNAME,TEACHER) 试用SQL的查询语句表达下列查询: 1)检索学号为S3的学生所学课程的课程号与成绩。(5分) 2)检索年龄大于20岁的女学生的姓名和性别。(5分) 3)检索“数据库”课程的课程号。(10分) 4)检索王敏同学没有选修的课程的课程号。(10分) 5)统计每门课程的学生选修人数(超过15人的课程才统计)。要求显示课程号,课程名和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。(10分) 6)求刘老师所授课程的每门课程的成绩的最高分和最低分。(10分)
1)SELECT CNO, GRADE FROM SC WHERE SNO = 'S3';
2)SELECT SNAME, SEX FROM Student WHERE AGE > 20 AND SEX = '女';
3)SELECT CNO FROM Course WHERE CNAME = '数据库';
4)SELECT CNO FROM Course WHERE CNO NOT IN (SELECT CNO FROM SC WHERE SNO = (SELECT SNO FROM Student WHERE SNAME = '王敏'));
5)SELECT C.CNO, C.CNAME, COUNT(*) AS NUM FROM Course AS C JOIN SC ON C.CNO = SC.CNO GROUP BY C.CNO, C.CNAME HAVING NUM > 15 ORDER BY NUM DESC, C.CNO ASC;
6)SELECT CNO, MAX(GRADE) AS MAX_GRADE, MIN(GRADE) AS MIN_GRADE FROM SC WHERE CNO IN (SELECT CNO FROM Course WHERE TEACHER = '刘老师') GROUP BY CNO;
阅读全文
相关推荐
















