عدد المنشورات حسب الفئة الرئيسية والمستخدم
لكل فئة رئيسية، قائمة بالمستخدمين الذين ساهموا فيها وعدد المنشورات التي قدموها. تشمل المنشورات كلًا من منشورات بدء الموضوع والتعليقات أدناه. يمكنك اختيار عرض فئة رئيسية واحدة فقط عن طريق تعديل الاستعلام.
/* جمع الأكواد في الفئات الفرعية والفئات الرئيسية */
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