Problém je matematika s hodnotami null a řazení s hodnotami null (zaškrtněte volbu "NULLS LAST" pro přepsání výchozího řazení, které vrací hodnoty null jako první pro sestupné pořadí).
Ve vašem případě s vnějším spojením, pokud má uživatel spoustu komentářů k článku, ale žádné komentáře na fóru, dobře, 100 + null =null v matematice Oracle. Takže aby matematika fungovala, musíte nastavit null=0. To je místo, kde přichází na řadu NVL() (a má také příjemný vedlejší efekt odstranění otravných nul z vaší sady výsledků)!
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
Vidím, že máte ve svých značkách MySQL i Oracle - výše uvedené platí pro Oracle. Pokud pro MYSQL místo toho použijte COALESCE(COUNT(),0).