Oto twoja aktualizacja:
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;
Oto usuwanie, które usuwa zduplikowane wiersze:
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Zauważ, że składnia „update…from” i „delete…using” są specyficzne dla Postgresa i zostały bezwstydnie skradzione z ta odpowiedź i ta odpowiedź .)
Prawdopodobnie będziesz chciał również uruchomić to, aby zmniejszyć wszystkie nazwy:
UPDATE STATS SET nick = lower(nick);
Aaai wrzuć unikalny indeks dla małej wersji „nick” (lub dodaj ograniczenie do tej kolumny, aby zabronić wartości, które nie są małymi literami):
CREATE UNIQUE INDEX ON stats (LOWER(nick));