レコードを 1 つにマージしながら重複を削除する最良の方法は何ですか?
テーブルがプレイヤー名とその記録を次のように追跡する状況があります。
stats
-------------------------------
nick totalgames wins ...
John 100 40
john 200 97
Whistle 50 47
wHiStLe 75 72
...
次のように、ニックが重複している行をマージし (大文字と小文字を区別しない場合)、レコードを 1 つにマージする必要があります。
stats
-------------------------------
nick totalgames wins ...
john 300 137
whistle 125 119
...
私はPostgresでこれをやっています。これを行う最良の方法は何ですか?
これを行うことで、重複が存在する名前を取得できることを私は知っています:
select lower(nick) as nick, totalgames, count(*)
from stats
group by lower(nick), totalgames
having count(*) > 1;
私は次のようなことを考えました:
update stats
set totalgames = totalgames + s.totalgames
from (that query up there) s
where lower(nick) = s.nick
これが正しく機能しないことを除いて。そして、重複した名前を含む他の重複行を削除できないようです。私に何ができる?助言がありますか?