关于AVG() group by , having, where 字句的使用
关于使用聚合Avg函数,Having / Where 字句的位置。
请问,为什么 1, 2 没问题; 3可以,4却不行呢?
1. select ID, AVG(Salary) from EMPLOYEE Group by ID Having ID in ('ID1', 'ID2') -- OK
2. select ID, AVG(Salary) from EMPLOYEE where ID in ('ID1', 'ID2') Group by ID -- OK
3. select ID, AVG(Salary) from EMPLOYEE Group by ID Having count(*)>=2 -- OK
4. select ID, AVG(Salary) from EMPLOYEE where count(*)>2 Group by ID -- Not OK
请问,为什么 1, 2 没问题; 3可以,4却不行呢?
1. select ID, AVG(Salary) from EMPLOYEE Group by ID Having ID in ('ID1', 'ID2') -- OK
2. select ID, AVG(Salary) from EMPLOYEE where ID in ('ID1', 'ID2') Group by ID -- OK
3. select ID, AVG(Salary) from EMPLOYEE Group by ID Having count(*)>=2 -- OK
4. select ID, AVG(Salary) from EMPLOYEE where count(*)>2 Group by ID -- Not OK
...全文
相关推荐
浅谈sql语句中GROUP BY 和 HAVING的使用方法
在更复杂的查询中,GROUP BY和HAVING可以结合使用。
Mysql中order by、group by、having的区别深入分析
GROUP BY 子句则用于对数据进行分组,通常与聚合函数一起使用,例如 SUM(), COUNT(), AVG(), MAX(), MIN() 等。
数据库笔试题之查询语句where,group by,having,order by执行与编写顺序详解
WHERE子句用于过滤数据,GROUP BY子句用于分组数据,HAVING子句用于筛选分组后的数据,ORDER BY子句用于排序数据。索引可以提高查询速度,但需要根据实际情况选择是否使用索引。
数据库SQL中having和where的用法区别
但是,WHERE子句不能包含聚合函数,因为它在数据被分组之前执行,此时聚合函数的结果尚未确定。2. **HAVING子句**: HAVING子句与GROUP BY子句配合使用,用于筛选聚合后的结果。
group by,having,order by的用法详解
例如: ```sql SELECT job, AVG(sal) FROM emp GROUP BY job HAVING AVG(sal) > 1500; ``` 这个查询会返回平均薪水超过1500


