无法理解WHERE子句被接受的原因

Dot*_*NET 4 sql database sql-server sql-server-2008

我试图理解HAVING和WHERE之间的区别.我知道它HAVING与GROUP BY语句一起使用.但是,我不明白为什么接受以下声明:

select SUM(child_id) from children WHERE child_ID = 5 GROUP BY Child_ID
Run Code Online (Sandbox Code Playgroud)

不应该是正确的陈述select SUM(child_id) from children GROUP BY Child_ID HAVING child_ID = 5吗?

Pie*_*ens 6

WHERE子句在分组过程发生之前执行,并且只能访问输入表中的字段.HAVING在分组过程发生后执行,并且可以基于在分组过程中计算的聚合值的值来过滤结果.