المشاهدات حسب الفئة الرئيسية

المشاهدات حسب الفئة الرئيسية

بما في ذلك المجموع الكلي لجميع مشاهدات المواضيع في منتداك منذ البداية.

/* SELECT الخارجية لإخفاء عمود ترتيب الاصطناعي، والفرز حسبه. */
SELECT "Category", "Views"
FROM (

    /* المشاهدات لكل فئة رئيسية. */
    SELECT 
        topcat AS "Category", 
        SUM(views) AS "Views",
        0 AS sortorder /* عمود ترتيب اصطناعي، هنا للفرز في البداية. */
    
    FROM (
        /* مشاهدات المواضيع في الفئات الفرعية. */
        SELECT
            topcat.name AS topcat, SUM(topics.views) AS views
        FROM topics
            INNER JOIN categories subcat ON topics.category_id = subcat.id
            INNER JOIN categories topcat ON subcat.parent_category_id = topcat.id
        GROUP BY topcat.name
        
        UNION
    
        /* مشاهدات المواضيع في الفئات الرئيسية (باستثناء الفئات الفرعية). */
        SELECT
            topcat.name AS topcat, SUM(topics.views) AS views
        FROM topics 
            INNER JOIN categories topcat ON topics.category_id = topcat.id
        WHERE topcat.parent_category_id IS NULL
        GROUP BY topcat.name
    ) AS views_by_cat
    GROUP BY topcat
    
    UNION
    
    /* إضافة صف TOTAL في النهاية. */
    SELECT 
        'GRAND TOTAL' AS "Category",
        SUM(topics.views) AS "Views",
        1 AS sortorder /* عمود ترتيب اصطناعي، هنا للفرز في النهاية. */
    FROM
        topics
    GROUP BY "Category"
    
    /* رتب المخرجات إما حسب الفئة أو حسب المشاهدات. فعّل أحد الخيارات التالية: */
    /* ORDER BY topcat, subcat */
    ORDER BY "Views" DESC

) AS views_by_cat_with_total

ORDER BY sortorder, "Category"