Помогите составить 2 SQL-запроса
SELECT  `company` , customer, COUNT(  `item` ) AS items
FROM  `test` 
GROUP BY company
HAVING COUNT(  `item` ) >10
ORDER BY COUNT(  `customer` ) DESC 

Я бы выгружал это в отдельную табличку и там уже искал рейтинг нужной. Хотя можно потестить вычисляемое поле в этот запрос затискать.
Вам нужно активно пользоваться GROUP BY и DISTRINCT операторами. Чуть позже напишу более подробное решение.