字母/數字序,相似值相鄰。僅為顯示順序,非真正分組。
同值僅顯示一列。SELECT ZIP FROM Customers GROUP BY ZIP 回傳唯一郵遞區號。
限制:SELECT 清單必須包含 GROUP BY 欄位或聚合函數;不支援別名;不自動排序(需加 ORDER BY)。
SELECT ZIP FROM Customers WHERE State='KY' GROUP BY ZIP;
WHERE 在分組前過濾列,不支援聚合函數。
SELECT ZIP, COUNT(ZIP) AS KYCustomers FROM Customers
WHERE State='KY' GROUP BY ALL ZIP;
非 KY 州的 ZIP 仍會出現,聚合值為 0。遠端查詢不支援。
SELECT ZIP, COUNT(ZIP) AS Cnt FROM Customers
GROUP BY ZIP HAVING COUNT(ZIP) = 1;
僅保留符合聚合條件的分組。口訣:WHERE 過濾列,HAVING 過濾分組。
WHERE → GROUP BY → HAVINGHAVING。COUNT(DISTINCT col):去重計數。SUM/CASE WHEN:條件聚合(如各狀態筆數)。GROUPING SETS / ROLLUP / CUBE:多維度小計(SQL Server/Oracle/PostgreSQL)。ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...)、RANK()、NTILE() 解決 Top-N per group、分頁、百分位等複雜統計。
GROUP BY GROUPING SETS ((a,b), (a), ()) 一次查詢產出多層級彙總。
及時更新統計資訊(UPDATE STATISTICS/ANALYZE TABLE),優化器才能為 GROUP BY/ORDER BY 選擇最佳執行計畫(Hash Aggregate vs Sort Aggregate)。