Это решение не очень оптимальное, поэтому, если ваша таблица очень большая, ее выполнение займет некоторое время, но оно выполняет то, что вы просите.
select c.city, c.id,
(select count(*) as cnt from city c2
where c2.city = c.city) as order_col
from city c
order by order_col desc
То есть для каждого города, с которым вы сталкиваетесь, вы подсчитываете, сколько раз этот город встречается в базе данных.
Отказ от ответственности: это дает то, что вы просите, но я бы не рекомендовал это для производственных сред, где число строк будет слишком большим.