SQL中使用GROUP BY注意事項


書寫聚合建之外的列名會發生錯誤

使用聚合函數時,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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM