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

MySQL 統計某欄位各值出現次數:GROUP BY + COUNT(1) 單條 SQL 秒出結果

     編輯:MySQL 綜合教學

MySQL 統計某欄位各值出現次數:GROUP BY + COUNT(1) 單條 SQL 秒出結果

需求:確認 material 表 type 欄位中 news、image 等各值各有多少筆,且未來可能新增其他值,需通用統計。

資料樣貌

material 表資料範例

核心 SQL

SELECT type, COUNT(1) AS counts
FROM material
GROUP BY type;

結果範例

type   | counts
-------|-------
news   | 1250
image  | 890
video  | 320
...    | ...

關鍵提示

  • COUNT(1) vs COUNT(*):效能相同 (InnoDB 優化器會自動轉換),但 COUNT(1) 語義更明確「計算行數」,習慣上推薦。
  • 若需同時顯示佔比:
SELECT
  type,
  COUNT(1) AS counts,
  ROUND(COUNT(1) * 100.0 / SUM(COUNT(1)) OVER (), 2) AS pct
FROM material
GROUP BY type;

(需 MySQL 8.0+ 窗口函數支援)

擴展:前 N 大分類

SELECT type, COUNT(1) AS counts
FROM material
GROUP BY type
ORDER BY counts DESC
LIMIT 10;

一條 SQL 解決動態分類統計,無需應用層迴圈查詢,效能與簡潔度雙贏。

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