请教各位前辈:
如何按找出每小组成绩高于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
先谢了!!!
如何按找出每小组成绩高于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
先谢了!!!
--测试数据
;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 总成绩结果: