如何统计坐标唯一组合,找出网格区域中客户最多的区域
解决方案
你需要通过分组统计实现按坐标聚合客户数量,正确的SQL语句如下:
SELECT TO_CHAR(Hubs.HubCoordX, 'FM999999999999') AS "X Co-ordinate", TO_CHAR(Hubs.HubCoordY, 'FM999999999999') AS "Y Co-ordinate", COUNT(*) AS "客户数量" FROM Customers INNER JOIN Hubs ON Customers.HubID = Hubs.DestinationID GROUP BY Hubs.HubCoordX, Hubs.HubCoordY ORDER BY "客户数量" DESC, "X Co-ordinate", "Y Co-ordinate";
关键说明:
- 修正字段错误:你原查询中Y坐标误写为
HubCoordX,已改为HubCoordY,确保坐标对应正确。 - 分组逻辑:用
GROUP BY Hubs.HubCoordX, Hubs.HubCoordY将相同坐标的记录聚合在一起。 - 统计方式:使用
COUNT(*)而非去重统计,每条记录对应一个客户,直接计数即可得到该坐标下的客户总数——这正是你需要的结果,而非去重后的唯一坐标数。 - 排序优化:添加
ORDER BY "客户数量" DESC可直接看到客户最密集的区域(排在最前),也可保留你原有的坐标排序逻辑。
执行上述语句后,会得到你预期的结果:
| X Co-ordinate | Y Co-ordinate | 客户数量 |
|---|---|---|
| -3 | 1 | 1 |
| -2 | 18 | 1 |
| 0 | 0 | 6 |
| 3 | 1 | 2 |
| 7 | 3 | 1 |
内容的提问来源于stack exchange,提问作者LeeMo
相关产品推荐
相关产品推荐

