Hier is je update:
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;
Hier is de verwijdering om de dubbele rijen weg te blazen:
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Merk op dat de syntaxis 'update...from' en 'delete...using' Postgres-specifiek zijn en schaamteloos zijn gestolen van dit antwoord en dit antwoord .)
U wilt dit waarschijnlijk ook uitvoeren om alle namen te verkleinen:
UPDATE STATS SET nick = lower(nick);
Aaaan en gooi een unieke index in de kleine versie van 'nick' (of voeg een beperking toe aan die kolom om niet-kleine letters niet toe te staan):
CREATE UNIQUE INDEX ON stats (LOWER(nick));