Masalahnya adalah matematika dengan nol, dan memesan dengan nol (periksa opsi "NULLS LAST" untuk mengesampingkan pemesanan default yang mengembalikan nol terlebih dahulu untuk urutan menurun).
Dalam kasus Anda, dengan gabungan luar, jika pengguna memiliki banyak komentar artikel tetapi tidak ada komentar forum, nah, 100 + null =null dalam matematika Oracle. Jadi agar matematika berfungsi, Anda perlu membuat null=0. Di situlah NVL() masuk (dan juga memiliki efek samping yang bagus untuk menghilangkan null sial dari set hasil Anda)!
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
Saya melihat Anda memiliki MySQL dan Oracle di tag Anda - di atas adalah untuk Oracle. Jika untuk MYSQL gunakan COALESCE(COUNT(),0) sebagai gantinya.