sql数据库建立学生表 求解:sql数据库检索各科成绩均大于等于该科平均成绩的学生的学号和姓名?

求解:sql数据库检索各科成绩均大于等于该科平均成绩的学生的学号和姓名?至少得有两个表,一个是学生档案表,假如叫stu,字段包括:name,code,分别表示姓名、学号,一个是成绩表gra,字段包括:

求解:sql数据库检索各科成绩均大于等于该科平均成绩的学生的学号和姓名?

至少得有两个表,一个是学生档案表,假如叫stu,字段包括:name,code,分别表示姓名、学号,一个是成绩表gra,字段包括:code,subid,num,分别表示学号,科目表主键,分数。因为查询结果不必展示科目名称,就不联查科目表了。

思路,先得到各科平均成绩,再查分数不小于平均成绩的学生。

查询语句如下:

select name,code

from stu

where code not in

(select gra.code from gra

left join (select subid,avg(num) as anum from gra group by subid) as g

on gra.subid=g.subid

where g.anum>gra.num)