请教各位前辈:   
          如何按找出每小组成绩高于90分的记录?   
  原数据表:   
   班级    组名ID         姓名        成绩           
 一班     8025,           ‘张三’,        96.5   
  一班     1198           '李四',          86
  三班     7065            '王五',        95.6  
  三班     7065            '王七',        97.6   
  三班     1236            '张平',        95.3  
  三班     2569            '张兰',         88
    
达标的条件:成绩高于90分结果:   
班级   达标小组数  实际小组数    达标成员数  实际成员数 达标总成绩
一班     1                     2                            1                2                  96.5
三班     2                     3                             3              4                   288.5
  先谢了!!!   
    

解决方案 »

  1.   

    语句:
    --测试数据
    ;WITH tab1(班级,组名ID,姓名,成绩)AS(
    select '一班','8025','张三',96.5   union all 
    select '一班','1198','李四',80   union all 
    select '三班','7065','王五',95.6   union all  
    select '三班','7065','王七',97.6   union all  
    select '三班','1236','张平',95.3   union all 
    select '三班','2569','张兰',88   
    )
    --测试数据结束
    SELECT  班级 ,
            COUNT(DISTINCT 组名ID) 达标小组数 ,
            ( SELECT    COUNT(DISTINCT 组名ID)
              FROM      tab1 b
              WHERE     a.班级 = b.班级
            ) 达标小组数 ,
            COUNT(1) 达标成员数 ,
            ( SELECT    COUNT(1)
              FROM      tab1 c
              WHERE     a.班级 = c.班级
            ) 实际成员数 ,
            SUM(成绩) 总成绩
    FROM    tab1 a
    WHERE   成绩 > 90
    GROUP BY 班级
    ORDER BY 总成绩结果: