Usas ROW_NUMBER() OVER (PARTITION BY ciudad ORDER BY compras DESC) sobre los 8 clientes.
Toca a los clientes que tendrían el número 1 en SU PROPIA ciudad.
A · cliente
B · ciudad
C · compras
1
Monterrey
8
2
CDMX
3
3
Monterrey
5
4
Guadalajara
2
5
Monterrey
1
6
CDMX
9
7
Puebla
4
8
Monterrey
6
Ana, Beto, Iván y Sofía elegidos