Número de publicaciones por categoría de primer nivel y usuario
Para cada categoría de primer nivel, una lista de los usuarios que contribuyeron a ella y el número de publicaciones que aportaron. Las publicaciones incluyen tanto los mensajes iniciales de los temas como los comentarios a continuación. Puedes seleccionar ver solo una categoría de primer nivel editando la consulta.
/* Sumar códigos en categorías de subnivel y de primer nivel */
SELECT
category_id, username AS "Usuario", SUM(contributions) AS "Número de publicaciones"
FROM (
/* Usuarios con temas en categorías de primer nivel. */
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
/* Usuarios con temas en categorías de subnivel, por categoría de primer nivel. */
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, "Número de publicaciones" DESC