Поскольку вам нужен счет для каждого пользователя во всей базе данных и, следовательно, для каждого сообщения, просто сделайте это простым способом:
SELECT
Id AS [User Link],
Reputation,
Reputation * 1.0 / C.Cnt AS [Rep Per Post]
FROM
Users U
INNER JOIN (
SELECT OwnerUserId, Cnt = Count(*)
FROM posts
GROUP BY OwnerUserID
HAVING Count(*) >= ##MinNumberOfPosts##
) C ON U.Id = C.OwnerUserId
ORDER BY [Rep Per Post] DESC
Вы можете обнаружить, что это дает тот же план выполнения, что и решение CROSS APPLY, но это может быть только потому, что механизм достаточно умен, чтобы избежать коррелированного подзапроса и переключить его на простой агрегат, как явно указывает этот запрос. Если CROSS APPLY действительно работает лучше, мне интересно узнать почему.
P.S. Я добавил * 1.0
, потому что я догадываюсь (не уверен в механизме здесь), что целочисленное деление дает целые числа, и кажется, что вы, вероятно, захотите дроби. Вам придется экспериментировать.