최상위 카테고리별 조회수
포럼 개설 이래 모든 토픽의 총 조회수를 포함합니다.
/* 인위적인 정렬 순서 열을 숨기고 해당 열 기준으로 정렬하기 위한 외부 SELECT */
SELECT "카테고리", "조회수"
FROM (
/* 최상위 카테고리별 조회수 */
SELECT
topcat AS "카테고리",
SUM(views) AS "조회수",
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
'총계' AS "카테고리",
SUM(topics.views) AS "조회수",
1 AS sortorder /* 인위적인 정렬 열. 여기서는 맨 뒤로 정렬하기 위해 사용 */
FROM
topics
GROUP BY "카테고리"
/* 카테고리 또는 조회수 중 하나로 출력을 정렬합니다. 다음 중 하나를 활성화하세요: */
/* ORDER BY topcat, subcat */
ORDER BY "조회수" DESC
) AS views_by_cat_with_total
ORDER BY sortorder, "카테고리"