عدد المنشورات حسب الفئة العليا والمستخدم

عدد المنشورات حسب الفئة الرئيسية والمستخدم

لكل فئة رئيسية، قائمة بالمستخدمين الذين ساهموا فيها وعدد المنشورات التي قدموها. تشمل المنشورات كلًا من منشورات بدء الموضوع والتعليقات أدناه. يمكنك اختيار عرض فئة رئيسية واحدة فقط عن طريق تعديل الاستعلام.

/* جمع الأكواد في الفئات الفرعية والفئات الرئيسية */
SELECT 
    category_id, username AS "المستخدم", SUM(contributions) AS "عدد المنشورات"
FROM (

    /* المستخدمون الذين لديهم مواضيع في الفئات الرئيسية. */
    SELECT
        topics.category_id, COUNT(*) AS contributions, users.username
    FROM users 
        INNER JOIN posts ON users.id = posts.user_id
        INNER JOIN topics ON posts.topic_id = topics.id
        INNER JOIN categories ON topics.category_id = categories.id
    WHERE categories.parent_category_id IS NULL
    GROUP BY category_id, username
    
    UNION
    
    /* المستخدمون الذين لديهم مواضيع في الفئات الفرعية، حسب الفئة الرئيسية. */
    SELECT
        categories.parent_category_id AS category_id, COUNT(*) AS contributions, users.username
    FROM users 
        INNER JOIN posts ON users.id = posts.user_id
        INNER JOIN topics ON posts.topic_id = topics.id
        INNER JOIN categories ON topics.category_id = categories.id
    WHERE categories.parent_category_id IS NOT NULL
    GROUP BY categories.parent_category_id, username

) AS users_by_category
INNER JOIN categories ON category_id = categories.id

GROUP BY category_id, username

HAVING SUM(contributions) > 5

ORDER BY category_id, "عدد المنشورات" DESC