Проблемът е математика с нули и подреждане с нули (проверете опцията „NULLS LAST“ за отмяна на подреждането по подразбиране, което връща първо нулите за низходящ ред).
Във вашия случай, с външните съединения, ако потребителят има много коментари за статии, но няма коментари във форума, добре, 100 + null =null в математиката на Oracle. Така че, за да работи математиката, трябва да направите null=0. Това е мястото, където NVL() идва на помощ (и също така има хубавия страничен ефект да елиминира досадните нули от вашия набор от резултати)!
SELECT u.id, u.username, (NVL(COUNT(a.id),0) + NVL(COUNT(f.id),0)) AS rank
FROM site_users u
LEFT JOIN site_articles_comments a ON a.user_id = u.id
LEFT JOIN site_forum_comments f ON f.user_id = u.id
GROUP BY u.username, u.id ORDER BY rank DESC LIMIT :l
Виждам, че имате MySQL и Oracle във вашите тагове - горното е за Oracle. Ако за MYSQL използвайте вместо това COALESCE(COUNT(),0).