Постройте шаг за шагом.
Найдите максимальное количество для каждой компании, предполагая, что первая таблица данных, показанная в вопросе, называется «Билеты»:
SELECT Company, MAX(Quantity) AS MaxQuantity
FROM Tickets
GROUP BY Company;
Теперь найдите данные для пользователя (ей) с этим максимальным количеством для этой компании:
SELECT T.User, T.Company, M.MaxQuantity
FROM Tickets AS T
JOIN (SELECT Company, MAX(Quantity) AS MaxQuantity
FROM Tickets
GROUP BY Company) AS M
ON T.Company = M.Company AND T.Quantity = M.MaxQuantity;
Если максимальное количество для конкретной компании, скажем, 200, и два пользователя оба набрали по 200 для этой компании, то в этом запросе перечислены оба пользователя.
Теперь, если вы имеете в виду, что запрос, который вы показываете в вопросе, генерирует первую таблицу результатов, то то, что я назвал тикетами чуть выше, должно быть производной таблицей:
SELECT T.User, COUNT(T.User) AS Quantity, T.Ccompany
FROM Ticket AS T
INNER JOIN Company AS P ON P.Company = T.Company
GROUP BY (T.User, T.Company)
ORDER BY QUANTITY DESC
В этом случае мы можем использовать предложение WITH (синтаксис не проверен, но я думаю, что он правильный для стандарта SQL):
WITH Tickets AS
(SELECT T.User, COUNT(T.User) AS Quantity, T.Ccompany
FROM Ticket AS T
JOIN Company AS P ON P.Company = T.Company
GROUP BY (T.User, T.Company)
)
SELECT T.User, T.Company, M.MaxQuantity
FROM Tickets AS T
JOIN (SELECT Company, MAX(Quantity) AS MaxQuantity
FROM Tickets
GROUP BY Company) AS M
ON T.Company = M.Company AND T.Quantity = M.MaxQuantity;
Очевидно, что вы также можете дважды написать подзапрос WITH, если хотите.