SQL Fiddle
Aqui está sua atualização:
UPDATE stats
SET totalgames = x.games, wins = x.wins
FROM (SELECT LOWER(nick) AS nick, SUM(totalgames) AS games, SUM(wins) AS wins
FROM stats
GROUP BY LOWER(nick) ) AS x
WHERE LOWER(stats.nick) = x.nick;
Aqui está a exclusão para eliminar as linhas duplicadas:
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Observe que as sintaxes 'atualizar... de' e 'excluir...usando' são específicas do Postgres e foram roubadas descaradamente de esta resposta e esta resposta .)
Você provavelmente também desejará executar isso para reduzir todos os nomes:
UPDATE STATS SET nick = lower(nick);
Aaaae jogue um índice exclusivo na versão minúscula de 'nick' (ou adicione uma restrição a essa coluna para não permitir valores não minúsculos):
CREATE UNIQUE INDEX ON stats (LOWER(nick));