+ -- take the weighted average of the elos and sum the games to get the new total
+ FOR weighted_elo IN (select game_type_cd, elo_sum/game_count aggregate_elo, game_count
+ from (
+ select game_type_cd, sum(games*elo) elo_sum, sum(games) game_count
+ from player_elos
+ where player_id in (p_winner_player_id, p_loser_player_id)
+ group by game_type_cd
+ ) es)
+ LOOP
+ update xonstat.player_elos
+ set elo = weighted_elo.aggregate_elo, games = weighted_elo.game_count
+ where player_id = p_winner_player_id
+ and game_type_cd = weighted_elo.game_type_cd;
+
+ raise notice 'New % Elo is %.', weighted_elo.game_type_cd, weighted_elo.aggregate_elo;
+ END LOOP;
+