Puoi farlo con una sottoquery:
select count(*) as rank
from users u
where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)
Questo non fa esattamente la stessa cosa. Questo farà una vera e propria classifica, dove gli utenti con lo stesso valore di ammopacks
avrà lo stesso grado. L'originale darebbe a utenti diversi valori sequenziali diversi in questo caso.
Per ottenere questo effetto, puoi fare:
select count(*) as rank
from users u
where u.ammopacks > (select ammopacks from users u2 where u2.id = x) or
(u.ammopacks = (select ammopacks from users u2 where u2.id = x) and
u.id <= x
)