Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DEFINER=`root`@`localhost` PROCEDURE `ranked_match`(tagA VARCHAR(20), tagB VARCHAR(20), scoreA tinyint(2), scoreB tinyint(2))
- BEGIN
- DECLARE playerAid, playerBid, eloA, eloB, effA, effB, maxmatchid INT(11);
- DECLARE expectA, expectB NUMERIC(5,3);
- SELECT playerid INTO playerAid FROM Player WHERE tag=tagA;
- SELECT playerid INTO playerBid FROM Player WHERE tag=tagB;
- INSERT INTO Outcomes (player1id, player2id, player1score, player2score) VALUES (playerAid, playerBid, scoreA, scoreB);
- SELECT elo INTO eloA FROM Player WHERE playerid=playerAid;
- SELECT elo INTO eloB FROM Player WHERE playerid=playerBid;
- SET effA=POWER(10,(eloA/400));
- SET effB=POWER(10,(eloB/400));
- SET expectA=(scoreA+scoreB)*(effA/(effA+effB));
- SET expectB=(scoreA+scoreB)*(effB/(effA+effB));
- SET eloA=eloA+32*(ScoreA-expectA);
- SET eloB=eloB+32*(ScoreB-expectB);
- UPDATE Player SET elo=eloA WHERE playerid = playerAid;
- UPDATE Player SET elo=eloB WHERE playerid = playerBid;
- SELECT MAX(matchid) INTO maxmatchid FROM Outcomes;
- INSERT INTO HistoricalElo (matchid, playerid, newelo) VALUES (maxmatchid, playerAid, eloA);
- INSERT INTO HistoricalElo (matchid, playerid, newelo) VALUES (maxmatchid, playerBid, eloB);
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement