为什么HAVING clause可以/如何在GROUP BY之前出现
select count(1) from tableA
having id >1
group by id
order by count(1)
我知道HAVING
子句可以不包含GROUP BY
子句,
但是在定义GROUP BY
时为什么不强迫HAVING
作为ORDER BY
子句呢?
Derby按以下顺序处理SelectExpression:
- FROM子句
- WHERE子句
- GROUP BY(或隐式GROUP BY)
- HAVING子句
- ORDER BY子句
在所有文档中,它都显示在GROUP BY
之后:
GROUP BY WORKDEPT HAVING MAX(SALARY) < (SELECT AVG(SALARY) FROM EMPLOYEE WHERE NOT WORKDEPT = EMP_COR.WORKDEPT)
答案 0 :(得分:1)
因为haveing子句对结果起作用(过滤select的结果)
查询选择只能基于选择,或者如果是查询查询
结果是在GROUP BY之后产生的
通过这种方式,将HAVING放在查询CLAUSE ..的末尾,就在presentation子句(ORDER BY)之前