delete from Scores
where playerName+'|'+cast(levelID as varchar)+'|'+cast(Difficulty as varchar)+'|'+cast(score as varchar)
in(
select playerName+'|'+cast(levelID as varchar)+'|'+cast(Difficulty as varchar)+'|'+cast(score as varchar) from
(Select rank() over (partition by cast(levelID as varchar)+'|'+cast(Difficulty as varchar) order by score desc) as bRank,*
from Scores as b) as Ranks
where Ranks.bRank >= 10)
playerName+'|'+cast(levelID as varchar)+'|'+cast(Difficulty as varchar)+'|'+cast(score as varchar) を主キーに置き換えることができます
これにより、10 位以降のプレイヤーが得られます。
select Ranks.* from
(Select rank() over (partition by cast(levelID as varchar)+'|'+cast(Difficulty as varchar)
order by score desc) as bRank,*
from Scores as b) as Ranks
where Ranks.bRank >= 10
結果:
bRank playerName LevelID Score Difficulty
-------------------- -------------------------------------------------- ----------- ----------- -----------
10 Player 3 1 3 10
11 Player 2 1 2 10
12 Player 1 1 1 10