>тоесть цены выбирает верные, но ид номера никак не соответствует ценнику, должно быть так
Собственно по другому и не должно быть — группируете по стране, выбираете максимальную цену и выводите «рандомный» номер, нигде не указывая, что он должен соответствовать этой цене. Так или иначе нужно сначала получить максимальное значение, а потом номер для него.
Ваш запрос вообще не соответствует SQL-стандарту, и то, что он работает, особенность реализации MySQL.
Всё, что находится за пределами агрегатных функций, должно быть в GROUP BY.
Задачу можно решить через подзапрос, self-join или кастомную агрегатную функцию наподобие ARGMAX.
При этом, конечно, нужно учесть, что максимальное значение в общем случае может достигаться в нескольких записях. Если в вашем случае это исключено, тогда задача будет иметь решение.