Ето вашата актуализация:
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;
Ето изтриването за премахване на дублиращите се редове:
DELETE FROM stats USING stats s2
WHERE lower(stats.nick) = lower(s2.nick) AND stats.nick < s2.nick;
(Имайте предвид, че синтаксисът „update...from“ и „delete...using“ е специфичен за Postgres и е безсрамно откраднат от този отговор и този отговор .)
Вероятно също ще искате да изпълните това, за да намалите всички имена:
UPDATE STATS SET nick = lower(nick);
Aaa и добавете уникален индекс към версията с малки букви на 'nick' (или добавете ограничение към тази колона, за да забраните стойности без малки букви):
CREATE UNIQUE INDEX ON stats (LOWER(nick));