我有一个名为tournamentxplayer的mysql扑克数据库,其中包含一个名为tournamentxplayerid和tournamentid、playerid、finish和payout的主索引。
我一直在寻找方法来计算每个球员最长的连胜奖金。后来我想包括其他一些东西,如球员个人连胜(不是所有球员都玩每一场比赛,但有些球员确实玩得很好),最长连胜,甚至最长连胜没有获奖。不过,目前我根本不知道怎样才能最好地数一数连胜。
能做到吗?
谢谢
特里
最佳答案
我假设tournamentid是自动递增的,所以它提供了数据的时间顺序。
这是组内排序的经典问题。为此,您需要考虑以下变量:
mysql> set @p_id:=-1; set @streak:=0;
mysql> select playerID,max(streak) from (select playerID,@streak:=if(Payout=0,0,if(@p_id=playerID,@streak+1,1)) streak, @p_id:=playerID from (select playerID,TournamentID,Payout from table order by 1,2) a) a group by 1;
在本例中,etap是:
按球员排序然后按锦标赛排序
对于每个玩家:
如果有支付,则增加Streak变量
如果不是,则设置为0
如果玩家发生变化,将Streak设置为0。加油!=玩家ID。P_ID封装了最后一个考虑的玩家的信息。