Visualizzazioni per categoria di primo livello
Incluso il totale complessivo di tutte le visualizzazioni dei topic sul forum dall’inizio.
/* SELECT esterno per nascondere la colonna artificiale di ordinamento e ordinare in base ad essa. */
SELECT "Categoria", "Visualizzazioni"
FROM (
/* Visualizzazioni per categoria di primo livello. */
SELECT
topcat AS "Categoria",
SUM(views) AS "Visualizzazioni",
0 AS sortorder /* Colonna di ordinamento artificiale, qui per posizionarla all'inizio. */
FROM (
/* Visualizzazioni dei topic nelle categorie di sottolivello. */
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
/* Visualizzazioni dei topic nelle categorie di primo livello (esclusi i sottolivelli). */
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
/* Aggiunta di una riga TOTALE alla fine. */
SELECT
'TOTALE COMPLESSIVO' AS "Categoria",
SUM(topics.views) AS "Visualizzazioni",
1 AS sortorder /* Colonna di ordinamento artificiale, qui per posizionarla alla fine. */
FROM
topics
GROUP BY "Categoria"
/* Ordina l'output per categoria o per visualizzazioni. Abilita una di queste opzioni: */
/* ORDER BY topcat, subcat */
ORDER BY "Visualizzazioni" DESC
) AS views_by_cat_with_total
ORDER BY sortorder, "Categoria"