(3) Получаешь всех контрагентов с суммами продаж. Из этой вт получаешь другую с колонкой "нарастающий итог" в котором будет выводиться суммарная сумма продаж всех, у кого сумма ниже чем у текущей. Находишь контрагента с нарастающим итогом не меньше заданного и наконец из самой первой вт выводишь его и всех кто продал больше.
Проблемы будут если есть два контрагента с одинаковым объемом продаж и заданный объем достигается с одни из них. В зависимости от условий задачи если нельзя выводить лишнего контрагента, можно исхитриться и "нарастающий итог" считать не нарастающим итогом, а разницей с общей суммой. В типовой такого нет, афаир.
(3) в смысле? выводишь отчет по продажам: контрагент, сумма продаж, сортируешь таблицу по убыванию суммы продаж, всё. выводишь таблицу, пока общая сумма не превысила 80%.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший