Número de posts por categoria de nível superior e usuário
Para cada categoria de nível superior, uma lista dos usuários que contribuíram para ela e o número de posts que cada um deles fez. Os posts incluem tanto os que iniciaram o tópico quanto os comentários abaixo. Você pode selecionar para ver apenas uma categoria de nível superior editando a consulta.
/* Somar códigos em categorias de nível inferior e de nível superior */
SELECT
category_id, username AS "Usuário", SUM(contributions) AS "Contagem de Posts"
FROM (
/* Usuários com tópicos em categorias de nível superior. */
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
/* Usuários com tópicos em categorias de nível inferior, por categoria de nível superior. */
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, "Contagem de Posts" DESC