Zde je vaše aktualizace:
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;
Zde je smazání, které odstraní duplicitní řádky:
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Všimněte si, že syntaxe 'update...from' a 'delete...using' jsou specifické pro Postgres a byly bezostyšně ukradeny z tuto odpověď a tato odpověď .)
Pravděpodobně také budete chtít spustit toto, abyste snížili velikost všech jmen:
UPDATE STATS SET nick = lower(nick);
Aaa a vhoďte jedinečný index na verzi „nick“ s malými písmeny (nebo přidejte do tohoto sloupce omezení, abyste zakázali hodnoty, které nejsou malými písmeny):
CREATE UNIQUE INDEX ON stats (LOWER(nick));