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