正确答案是 D: `SELECT City FROM Customer GROUP BY City HAVING COUNT(ID)>200`
以下是对各个选项的分析:
A: `SELECT City FROM Customer HAVING COUNT(ID)>200`
- 这个选项是错误的,因为在SQL中使用`HAVING`子句时,必须先使用`GROUP BY`子句进行分组。
B: `SELECT City FROM Customer WHERE COUNT(ID)>200 GROUP BY City`
- 这个选项是错误的,因为`WHERE`子句不能用于聚合函数`COUNT`。聚合函数需要在分组之后使用`HAVING`子句来过滤结果。
C: `SELECT City FROM Customer GROUP BY City WHERE COUNT(ID)>200`
- 这个选项是错误的,因为`WHERE`子句不能用于聚合函数`COUNT`。同样,这种过滤应该在分组之后使用`HAVING`子句。
D: `SELECT City FROM Customer GROUP BY City HAVING COUNT(ID)>200`
- 这个选项是正确的。首先,使用`GROUP BY`子句对`City`进行分组,然后使用`HAVING`子句来过滤那些客户数大于200的城市。
总结:在SQL查询中,`GROUP BY`用于将结果集按一个或多个列进行分组,`HAVING`子句用于过滤分组后的结果,通常用于聚合函数的过滤条件。