【发布时间】:2015-05-11 18:23:24
【问题描述】:
我有两张桌子。一个是商店列表(带有纬度/经度)。另一个是客户地址列表(带有纬度/经度)。我想要的是一个查询,它将为我的表中的每个商店返回一定半径内的客户数量。这给了我任何商店 10,000 米范围内的客户总数,但我不确定如何循环它以为每个商店返回一行并计数。
请注意,我正在使用 cartoDB 进行此查询,其中 the_geom 基本上是 long/lat。
SELECT COUNT(*) as customer_count FROM customer_table
WHERE EXISTS(
SELECT 1 FROM store_table
WHERE ST_Distance_Sphere(store_table.the_geom, customer_table.the_geom) < 10000
)
这会产生一行:
customer_count
4009
关于如何解决我的问题的建议?我愿意以其他可能更有效(更快)的方式来做这件事。
作为参考,带有商店名称的列,将在一列中是store_identifier.store_table
【问题讨论】:
-
不要使用
count(*)。select * ...,然后使用 num_rows() 快速确定匹配的商店数量。 -
我已经回答了你后来的问题 - 非常相似 - 问题。我建议您完全删除此问题,因为它似乎已被您以后的问题所取代。
标签: postgresql postgis cartodb