今天告诉我要写一个服务,目的是按照每个班中各分组中竞赛最高分组平分小组得分给各个成员的服务,于是就有两个技术需求
1 查询每个班的冠军团队
2 增加一组人的分数
从“1”中,查出每个班N个分组中的得分冠军团队,然后根据这个团队小组人数,把团队得分平均分成N份,用方法“2”更新该组人的分数。
上查询代码!
1 有可能有更好的方法,我在网上参考了这篇文章,
http://www.jb51.net/article/31590.htm
选择了方法4中的 Inner JOIN,当然有一个班中两组平分儿和分数除以人数不为整数的情况产生,这里都不考虑程序中的逻辑处理,只考实现查询需要的原始信息。
1 -- 查询每个班的冠军团队 2 SELECT a.* 3 FROM t_mfg_ClassGameGroup a INNER JOIN ( 4 SELECT f_ClassId , MAX(f_Score) Score 5 FROM t_mfg_ClassGameGroup GROUP BY f_ClassId) b 6 ON a.f_ClassId = b.f_ClassId AND a.f_Score = b.Score 7 ORDER BY a.f_ClassId
查询结果
2 数据都是模拟的
-- 增加一组人的分 UPDATE t_mfg_Student SET f_Score = f_Score + 10 WHERE f_uid IN (SELECT f_UID FROM t_mfg_UserGroup WHERE f_groupId = 2)
用这两个工具语句就可以实现更新了