1、如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY 字句中。例:
|
SELECT product_type_id,AVG(price) FROM products; * |
2、不能在WHERE字句中使用聚合函数来限制行。如果试图这样做,就会出现下面的错误,例:
SELECT product_type_id,AVG(price) FROM products WHERE AVG(price) > 20 GROUP BY product_type_id *
ERROR at line 3:
ORA-00934: group function is not allowed here
因为WHERE字句只能用来对单行而不是分组进行过滤,要过滤分组行,可以使用HAVING字句
3、HAVING子句可以用来过滤行分组,它可以放在GROUP BY子句之后,
|
SELECT .... FROM WHERE.... GROUP BY ... HAVING.... ORDER BY... |
GROUP BY 可以不与 HAVING一起使用,但是HAVING 必须与GROUP BY 子句一起使用
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17016200/viewspace-589319/ ,如需转载,请注明出处,否则将追究法律责任。