Mysql 分组查询最高分
2015-07-26 10:52
627 查看
今天告诉我要写一个服务,目的是按照每个班中各分组中竞赛最高分组平分小组得分给各个成员的服务,于是就有两个技术需求
1 查询每个班的冠军团队
2 增加一组人的分数
从“1”中,查出每个班N个分组中的得分冠军团队,然后根据这个团队小组人数,把团队得分平均分成N份,用方法“2”更新该组人的分数。
上查询代码!
1 有可能有更好的方法,我在网上参考了这篇文章,
http://www.jb51.net/article/31590.htm
选择了方法4中的 Inner JOIN,当然有一个班中两组平分儿和分数除以人数不为整数的情况产生,这里都不考虑程序中的逻辑处理,只考实现查询需要的原始信息。
查询结果
![](http://images0.cnblogs.com/blog2015/470442/201507/261048252481639.png)
2 数据都是模拟的
用这两个工具语句就可以实现更新了
1 查询每个班的冠军团队
2 增加一组人的分数
从“1”中,查出每个班N个分组中的得分冠军团队,然后根据这个团队小组人数,把团队得分平均分成N份,用方法“2”更新该组人的分数。
上查询代码!
1 有可能有更好的方法,我在网上参考了这篇文章,
http://www.jb51.net/article/31590.htm
选择了方法4中的 Inner JOIN,当然有一个班中两组平分儿和分数除以人数不为整数的情况产生,这里都不考虑程序中的逻辑处理,只考实现查询需要的原始信息。
-- 查询每个班的冠军团队 SELECT a.* FROM t_mfg_ClassGameGroup a INNER JOIN ( SELECT f_ClassId , MAX(f_Score) Score FROM t_mfg_ClassGameGroup GROUP BY f_ClassId) b ON a.f_ClassId = b.f_ClassId AND a.f_Score = b.Score ORDER BY a.f_ClassId
查询结果
![](http://images0.cnblogs.com/blog2015/470442/201507/261048252481639.png)
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)
用这两个工具语句就可以实现更新了
相关文章推荐
- ubuntu下mysql的常用命令
- ubuntu 下mysql导入出.sql文件
- Mysqli:预编译 mysqli_stmt
- 解决mysql出现“the table is full”的问题
- mysql重装
- mysql实现文章上一篇下一篇的sql语句
- Mysql比较函数
- 小贝_mysql数据库备份与恢复
- 小贝_mysql主从复制作用以及案例
- MYSQL提权总结
- Percona Xtrabackup快速备份MySQL
- 不停止 MySQL 服务增加从库的两种方式
- MySQL 调优/优化的 100 个建议
- 关于 MySQL 密码你应该知道的那些事
- MySQL 5.6.26几种安装包的区别
- mysql的join操作
- mysql的show操作
- mysql报错:MySQL server version for the right syntax to use near 'type=InnoDB'
- mysql查询练习
- mysql 服务1067 坑爹的错误