Вам нужно запросить текущий запрос, а затем ограничиться id
, который вы хотите:
WITH cte AS (
SELECT u.id, m.sender, COUNT(*) AS count,
RANK() OVER (ORDER BY COUNT(*) DESC) count_rank
FROM message m
LEFT JOIN user u
ON u.id = m.sender
GROUP BY u.id, m.sender
)
SELECT *
FROM cte
WHERE id = 9;
Причина, по которой это необходимо, заключается в том, что если вы ограничиваетесь id = 9
в запросе, который вычисляетранжировать, тогда будут оцениваться только записи, имеющие id = 9
. Но вы хотите, чтобы все записей были ранжированы, а затем отфильтрованы.