正确答案是D: `SELECT City FROM Customer GROUP BY City HAVING COUNT(ID)>200`
专业分析:
1. **SELECT City FROM Customer GROUP BY City HAVING COUNT(ID)>200**
- 这条SQL语句首先使用 `GROUP BY City` 对 `Customer` 表按 `City` 字段进行分组。
- 然后使用 `HAVING COUNT(ID) > 200` 来过滤分组后的结果,保留那些客户数大于200的城市。
- 这种方式是正确的,因为 `HAVING` 子句是在 `GROUP BY` 分组后进行过滤的,适用于聚合函数。
2. **SELECT City FROM Customer HAVING COUNT(ID)>200**
- 这条SQL语句缺少 `GROUP BY` 子句,所以它无法按城市分组,也就无法正确计算每个城市的客户数。
3. **SELECT City FROM Customer WHERE COUNT(ID)>200 GROUP BY City**
- 这条SQL语句是错误的,因为 `WHERE` 子句不能用于聚合函数。聚合函数应该在 `HAVING` 子句中使用。
4. **SELECT City FROM Customer GROUP BY City WHERE COUNT(ID)>200**
- 这条SQL语句也是错误的,因为 `WHERE` 子句不能用于聚合函数。正确的做法是使用 `HAVING` 子句来过滤聚合后的结果。
综上所述,D选项是正确的选择。