sql查询每门课程被选修最高分最低分
时间: 2023-07-13 17:27:47 浏览: 205
您好!针对您的问题,可以使用以下 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 SC.CNO, SC.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='王敏');
5) SELECT SC.CNO, CNAME, COUNT(*) AS num_students FROM SC JOIN Course ON SC.CNO=Course.CNO GROUP BY SC.CNO, CNAME HAVING COUNT(*)>15 ORDER BY num_students DESC, SC.CNO ASC;
6) SELECT SC.CNO, MAX(GRADE) AS max_grade, MIN(GRADE) AS min_grade FROM SC JOIN Course ON SC.CNO=Course.CNO WHERE Course.TEACHER='刘老师' GROUP BY SC.CNO;
阅读全文