首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 依分類名稱統計部落格文章數與參與人數

     編輯:關於SqlServer

常見需求:依據分類統計文章數量與不重複發文使用者數。本文以 Discuz!/UCenter Home 風格資料表為例,示範 LEFT JOIN + GROUP BY + 聚合函數的標準寫法。

資料表結構

-- 文章表 pre_home_blog
-- 欄位:blogid, uid, username, catid, status, ...

-- 分類表 pre_home_blog_category
-- 欄位:catid, catname, ...

統計查詢 SQL

SELECT 
    b.catname AS '分類名稱',
    COUNT(*) AS '日誌數',
    COUNT(DISTINCT a.username) AS '參與人數'
FROM `pre_home_blog` a
LEFT JOIN `pre_home_blog_category` b ON a.catid = b.catid
WHERE a.status = 0  -- 僅統計正常發布狀態
GROUP BY b.catid, b.catname
ORDER BY '日誌數' DESC;

關鍵點解析

  • LEFT JOIN:保留無分類文章(catid=0 或 NULL),分類名稱顯示為 NULL。
  • COUNT(*):統計該分類下文章總筆數。
  • COUNT(DISTINCT a.username):去重統計發文使用者數,避免同一用戶多篇文章重複計算。
  • GROUP BY b.catid, b.catname:依分類聚合;某些 SQL 引擎要求 SELECT 非聚合欄位必須出現在 GROUP BY 中。

結果範例

分類名稱日誌數參與人數
生活隨筆15245
技術分享9832
心情日記6728
(無分類)128

延伸應用

  • 加入時間範圍:AND a.dateline BETWEEN '2024-01-01' AND '2024-12-31'
  • 只統計特定用戶群:AND a.uid IN (SELECT uid FROM ...)
  • 搭配 WITH ROLLUP 產生總計列。

此查詢模式廣泛適用於「主表 + 維度表」的分群統計場景,如商品分類銷售統計、部門員工績效統計等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved