Problemem jest matematyka z wartościami null i porządkowanie z wartościami null (zaznacz opcję „NULLS LAST” w celu nadpisania domyślnej kolejności, która zwraca null jako pierwsza dla kolejności malejącej).
W twoim przypadku, z zewnętrznymi sprzężeniami, jeśli użytkownik ma mnóstwo komentarzy do artykułów, ale nie ma komentarzy na forum, cóż, 100 + null =null w matematyce Oracle. Aby matematyka działała, musisz ustawić null=0. W tym miejscu pojawia się NVL() (i ma również przyjemny efekt uboczny polegający na wyeliminowaniu nieznośnych wartości zerowych z zestawu wyników)!
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
Widzę, że masz w swoich tagach zarówno MySQL, jak i Oracle - powyższe dotyczy Oracle. Jeśli dla MYSQL użyj zamiast tego COALESCE(COUNT(),0).