Voici votre mise à jour :
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;
Voici la suppression pour supprimer les lignes en double :
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Notez que les syntaxes 'update...from' et 'delete...using' sont spécifiques à Postgres et ont été volées sans vergogne à cette réponse et cette réponse .)
Vous voudrez probablement aussi exécuter ceci pour mettre tous les noms en minuscule :
UPDATE STATS SET nick = lower(nick);
Aaaet ajoutez un index unique sur la version minuscule de 'nick' (ou ajoutez une contrainte à cette colonne pour interdire les valeurs non minuscules) :
CREATE UNIQUE INDEX ON stats (LOWER(nick));