题目:
假设有 students 表,字段有 student_id(学生编号,主键),student_name(学生姓名),class_id(班级编号),score(成绩);
以及 classes 表,字段有 class_id(班级编号,主键),class_name(班级名称)。
编写 SQL 查询成绩高于所在班级平均成绩的学生姓名、成绩和班级名称
解答:
通过连接 students 表和 classes 表,并使用子查询计算每个班级的平均成绩,然后在主查询中筛选出成绩高于所在班级平均成绩的学生信息。
sql
select s.student_name,c.class_name,s.score
from students s
join classes c on s.class_id=c.class_id
where s.score>(
select avg(score) as avg_score
from students
group by class_id
having class_id=s.class_id
)