書寫聚合建之外的列名會發生錯誤
使用聚合函數時,SELECT子句中只能存在以下3中元素
- 常數
- 聚合函數
- GROUP BY指定的列名
-- 以下sql會報錯
SELECT product_name, purchase_price, COUNT(*)
FROM Product
GROUP BY purchase_price;
-- 正確寫法
SELECT purchase_price, COUNT(*)
FROM Product
GROUP BY purchase_price;
GROUP BY子句中使用別名可能會報錯
-- 可能會報錯的寫法
SELECT product_type AS pt, COUNT(*)
FROM Product
GROUP BY pt;
-- 正確寫法
SELECT product_type AS pt, COUNT(*)
FROM Product
GROUP BY product_type;
這個是有sql語句的執行順序決定的,因為是先執行的GROUP BY語句,再執行的SELECT語句
GROUP BY子句的返回結果是隨機排序的
不要在WHERE子句中使用聚合函數
-- 錯誤寫法
SELECT product_type, COUNT(*)
FROM Product
WHERE COUNT(*) = 2
GROUP BY product_type;
-- 正確寫法
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type
HAVING COUNT(*) = 4;