SQL:一张表里面三个字段,姓名,课程,学分,姓名有重复的,一个学生有多门课程及成绩.
要你查询某个姓的学生(有多人同姓)成绩平均分大于75的学生.       我是这样想的:  select 名字,avg(学分) from 表 where 名字 like '姓%' group by 名字 having  avg(学分)>75  .如果同名同姓的时候是可以查出来的。 比如:姓名  课程  学分
张三  数学   76
张三  英语   80
张三  语文   90
张三  地理   88但是当姓一样,名字不一样时,就不行了。比如:
姓名  课程  学分
张三  数学   76
张四  英语   80
张五  语文   90
张三  地理   88可能我想的不对,也有人说这是无解。请各位朋友帮看看。谢谢了。

解决方案 »

  1.   

    select 姓名 from 表 where 姓名 like '姓%' and 姓名 in (select 姓名,学分 from 表 where avg(学分)>75 group by 姓名)
      

  2.   

    select substring(名字,1,1),avg(学分) 
    from 表 
    group by substring(名字,1,1) having avg(学分)>75 
      

  3.   

    理解错了吧,这个是“找出平均分>75的所有姓”,
    题目是“查询某个姓的学生(有多人同姓)成绩平均分大于75的学生.”
    某个姓,应该就是特定了的,比如“张”lz的是对的,没发现什么问题
      

  4.   


    不清楚left和substring的截取效率,感觉前者会稍微高一些。没做实验。另外考虑复姓,比如"欧弟"和"欧阳震华",再复杂一点的"欧阳阳",如果数据录入时就不拆分,谁知道他姓欧还是姓欧阳呢 :-)