现在有一个成绩表记录学生所有学期的成绩的,现在想做一个计算毕业成绩的功能。有些科目可能是多个学期学的,现在想查出某班某科目一共学了多少个学期,再计平均,但因为有些学生是插班的,可能同学的同学学了 政治 4个学期,而插班生只学了3个学期,所以现在想计算出某班某科目中,次数最大的是多少。。数据结构大概如下
学号          姓名         科目      成绩      学期
001           小明         语文      88        第二学期
001           小明         语文      78        第三学期
001           小明         语文      90        第四学期
005           小红         语文      85        第三学期
005           小红         语文      77        第四学期

解决方案 »

  1.   


    --你没有班字段?
    select top 1 科目 , 姓名 , count(1) cnt
    from tb
    group by 科目 , 姓名
    order by cnt desc
      

  2.   

    --应该用学号准确些,忽略一楼。
    --你没有班字段?
    select top 1 科目 , 学号 , count(1) cnt
    from tb
    group by 科目 , 学号
    order by cnt desc
      

  3.   

    --如果存在班字段
    select top 1 科目 , 班级 , 学号 , count(1) cnt
    from tb
    group by 科目 , 班级 , 学号
    order by cnt desc
      

  4.   

    select top 1 学号,科目,count(1) as 次数
    from [tb]
    group by 学号,科目
    order by count(1) desc
      

  5.   

    select top 1 学号,count(*)
    from 成绩表
    where 班='某班' and 科目='某科目'
    group by 学号
    order by 2 desc
      

  6.   

    select top 1 科目 , 班级 , 学号 , count(1) cnt 
    from tb 
    group by 科目 , 班级 , 学号 
    order by cnt desc 
      

  7.   

    SELECT * FROM TB T WHERE ID=(SELECT MAX(ID) FROM TB WHERE NAME=T.NAME)
      

  8.   

    select
     top 1 学号,科目,count(1) as 次数
    from
     [tb]
    group by
     学号,科目
    order by
     count(1) desc