场景一:
某场射击比赛,张三、李四、王五三人参加比赛。
射击比赛规则:共进行三轮比赛;三轮比赛结束后,取最优成绩作为个人最佳成绩进行排名。
设计数据库表:
CREATE TABLE `TEST` ( `ID` int(11) NOT NULL, `NAME` varchar(45) DEFAULT NULL COMMENT '名称', `SCORE` int(11) DEFAULT NULL COMMENT '分数', `ROUND` int(11) DEFAULT NULL COMMENT '回合', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入数据:
三轮成绩下来
张三分别是9,10,10;
李四分别是10,9,8;
王五分别是9,8,8;
通过排序后可知,要取到的数据是ID分别为4,2,3的数据
通过对人名进行分组,获得人名及其所创造的最好成绩
通过表关联查询得出下面结果
此时需要对结果进行分组并取出每组ID最小值
对取出的ID查询并排序
这就是取出同一个表每组中最优数据。
如若再加一条件,当两数据最后得分相同,则平均分更高的排名靠前,都相同则按照名称排序。