select s.sname,
(select cid from sc_xxx where sid =t.sid ORDER BY score limit 1) cid
from s_xxx s,
(select sid,avg(score) from sc_xxx GROUP BY sid order by avg(score) desc limit 1) t
where s.sid=t.sid
select s.sid,s.sname,avg(score) from 学生表 s inner join 成绩表 c on s.sid = c.sid inner join 课程表 k on k.cid = c.cid group by s.sid,s.sname having avg(score)= max(avg(score))
select
a.sname
,a.sid
,a.min_score
,b.cid
from
(
select t1.sname
,t1.sid
,avg(t.score) avg_score
,min(t.score) min_score
from sc t
join s t1
on t.sid =t1.sid
group by t1.name,t1.sid
having avg(t.score )=max(avg(t.score))
) a
join sc b
on a. sid=b.sid
and a.min_score=b. score;