题目:查询平均成绩在80分及以上的所有学生的学号及平均成绩并按平均成绩降序排列。
SELECT s1.sno FROM student s1,class c1,timetable t,course c2,score s2 WHERE 
s1.classid = c1.classid AND c1.classid = t.classid AND t.courseid = c2.courseid
AND c2.courseid = s2.courseid; 
写到这里一脸懵逼,怎么做啊?

解决方案 »

  1.   


    select T1.sno as 学号, T2.sname as 姓名, 
    T1.avgscore as 平均成绩
    (select sno, sum(score)/count(courseid) as avgscore  
        from score group by sno
    having avgscore >= 80) AS T1
    left join student AS T2
    on T1.sno = T2.sno
    order by T1.avgscore如果  having avgscore >= 80 报错, 那就用  having sum(score)/count(courseid)  >= 80 
      

  2.   

    select  student.sno as 学号, student.sname as 姓名, avg(score.score) as 平均成绩
    from student left join score
    on student.sno = score.sno
    group by student.sno
    having avg(score.score)>80
    order by 平均成绩 desc   这样试试