А что будет происходить с той функцией которая исполняется в данное время и участвует в обновлении самой себя. Вы хотите сказать, что после окончания исполнения данной функции, следующее к ней обращение будет уже к обновленной функции?
Вроде как-то так, могу ошибаться:
1-й ответ, это скорее всего либо с подзапросом, либо с временной таблицей, в общем получается какой-то такой поток разума =):
Выбрать все купившие товары, сгруппированные по пользователям и уникальные по ID (DISTRICT) и посчитать количесвто COUNT(айди товара) и сделать условие, где этот COUNT > вашего количества, этим мы получаем количество товаров купленным каждым пользователем. Далее вместе с выбранными пользователями выбираем компании и группируем по компаниям сортируем по количеству пользователей с LIMIT до вашего количества
2-й вопрос. Фактически после этого нужно пронумеровать столбцы, выбрать по компании, как нумеровать подсказать не могу, вероятно у меня не хватает образования, поставил вопрос в избранное, если кто ответит.
Извиняюсь за сумбур, но без рабочей базы трудно все это протестировать. Удачи, надеюсь помог, если сказал все верно.