```markdown
在数据分析和课程管理中,经常需要从学生成绩数据库中提取特定条件下的信息。本篇文章将介绍如何查询选修人数超过2人且成绩都在60分以上的课程的课程名、最高成绩、最低成绩和平均成绩。
假设我们有一个成绩表 course_grades
,表结构如下:
| 字段 | 类型 | 描述 | |--------------|----------|--------------------| | course_name | VARCHAR | 课程名 | | student_id | INT | 学生ID | | score | DECIMAL | 学生成绩 |
我们需要查询的课程满足以下两个条件: 1. 选修人数超过2人; 2. 每个学生的成绩都在60分以上。
我们可以按照以下步骤构建查询: 1. 筛选成绩:首先过滤出所有成绩大于或等于60分的记录。 2. 统计人数:对于每门课程,统计成绩在60分以上的学生数量。 3. 计算课程成绩:对于每门课程,计算最高成绩、最低成绩和平均成绩。 4. 过滤课程:只保留选修人数超过2人的课程。
sql
SELECT
course_name,
MAX(score) AS highest_score,
MIN(score) AS lowest_score,
AVG(score) AS average_score
FROM
course_grades
WHERE
score >= 60
GROUP BY
course_name
HAVING
COUNT(student_id) > 2;
SELECT
:选择需要显示的字段,包括课程名、最高成绩、最低成绩和平均成绩。MAX(score)
:计算该课程的最高成绩。MIN(score)
:计算该课程的最低成绩。AVG(score)
:计算该课程的平均成绩。WHERE score >= 60
:筛选成绩大于或等于60分的记录。GROUP BY course_name
:按课程名分组,确保每门课程的成绩聚合。HAVING COUNT(student_id) > 2
:筛选选修人数超过2人的课程。假设查询结果如下:
| course_name | highest_score | lowest_score | average_score | |-------------|---------------|--------------|---------------| | 数学 | 95 | 60 | 75.2 | | 英语 | 88 | 62 | 72.5 | | 物理 | 92 | 63 | 78.3 |
通过以上查询,我们可以快速获得选修人数超过2人且成绩都在60分以上的课程的课程名、最高成绩、最低成绩和平均成绩。这些数据可以帮助教师和课程管理者了解课程的整体表现,并进一步做出教学调整。 ```