COUNT(*) 是 Oracle 中最常用的彙總函數,用於統計資料列數。其行為會因是否搭配 GROUP BY 而有所不同。
SELECT COUNT(*) FROM vincent_sms t;
回傳單一列,內容為該表的總記錄筆數。
SELECT COUNT(*) FROM vincent_sms t GROUP BY t.fmsgcontent;
此查詢會依 fmsgcontent 欄位分組,並回傳每個分組的記錄筆數,而非分組的個數。
COUNT() 函數的統計對象永遠是「組」的記錄筆數:
GROUP BY,整張表視為一個組,統計結果為全表列數。GROUP BY,則依分組欄位切分成多個組,分別統計各組列數。許多初學者容易誤以為 GROUP BY 後的 COUNT(*) 會回傳分組數量,實際上它回傳的是「每組有多少筆資料」。理解這一點對於撰寫正確的統計查詢至關重要。