Nombre de publications par catégorie de premier niveau et utilisateur

Nombre de publications par catégorie de premier niveau et par utilisateur

Pour chaque catégorie de premier niveau, une liste des utilisateurs qui y ont contribué ainsi que le nombre de publications qu’ils ont effectuées. Les publications incluent à la fois les messages initiaux des sujets et les commentaires qui suivent. Vous pouvez sélectionner l’affichage d’une seule catégorie de premier niveau en modifiant la requête.

/* Additionner les codes dans les catégories de sous-niveau et de premier niveau */
SELECT 
    category_id, username AS "Utilisateur", SUM(contributions) AS "Nombre de publications"
FROM (

    /* Utilisateurs ayant créé des sujets dans les catégories de premier niveau. */
    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
    
    /* Utilisateurs ayant créé des sujets dans les catégories de sous-niveau, regroupés par catégorie de premier niveau. */
    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, "Nombre de publications" DESC