1 a          90
1 b          45
1 c          78
2 a          98
2 b          68
3 a          89
3 b          79
3 c          68
学号     课程号           分数检索分数超过该课程平均分数的 学号 课程号 分数
select 学号,课程号,分数
from sc where 分数>(select avg(分数) from sc group by 课程号)  为什么这样做不来 谢谢答复

解决方案 »

  1.   

    select
        t.学号,t.课程号,t.分数
    from
        sc t
    where
        t.分数>(select avg(分数) from sc where 课程号=t.课程号)
      

  2.   

    select
        t.学号,t.课程号,t.分数
    from
        sc t
    where
        t.分数>(select avg(分数) from sc where 课程号=t.课程号)
    估计你最想知道后面这个吧。你可以这样想,如果你用你的groupby,而你的后面一句查出来提一个聚集,你明白吗?那么你怎么可能用一个条件去判断聚集呢?你的是语法就错了,
    就比如,你不可能用, str 和 str[]做比较一样。本身就是错误 。如果你把你的改一下就可以了,select 学号,课程号,分数 
    from sc  where 分数 in (select avg(分数) from sc group by 课程号) 
      

  3.   

    不知道我说的你明白了没有。呵呵。< > <= = >= 这些都是字符间,数字间等等的比较,不可能用字符,数值 等去和一个聚集,集合,数组之类的去做比较。我的意思,希望你明白。所以,要用。where.这想。select一条数据,就会判断这一条与这一条所属的课程得出的平均值做一个比较。为什么用别名呢?因为这里相当于两 个比,把原来的做变成了另一张表,具体我也说不清楚,建议你多想想,这对于。sql有好多用处呢、呵,最后希望你能快乐成为高手,我也 在学习中。一起学习。呵。