Просмотры по подкатегориям

Просмотры по подкатегориям

Более детальный анализ просмотров тем без их суммирования. Записи с подкатегорией «(none)» относятся к темам, размещённым непосредственно в категориях верхнего уровня.

SELECT 
    topcat AS "Категория", 
    subcat AS "Подкатегория", 
    SUM(views) AS "Просмотры подкатегории"

FROM (

    /* Просмотры тем в подкатегориях. */
    SELECT
        topcat.name AS topcat, subcat.name AS subcat, 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, subcat.name
    
    UNION

    /* Просмотры тем в категориях верхнего уровня (без учёта подкатегорий). */
    SELECT
        topcat.name AS topcat, '(none)', 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, subcat

/* Отсортировать вывод по категории или по просмотрам. Раскомментируйте один из вариантов: */
/* ORDER BY topcat, subcat */
ORDER BY "Просмотры подкатегории" DESC
7 лайков