У меня есть таблица существующих клиентов и еще одна таблица потенциальных клиентов. Я хочу вернуть список потенциальных клиентов, упорядоченный по количеству радиусов существующих покупателей, в которых они появляются.
Существует много строк в таблице потенциальных клиентов для каждого существующего клиента, и радиус вокруг данного существующего клиента может охватывать несколько потенциальных клиентов. Я хочу вернуть список потенциальных клиентов, упорядоченных по количеству существующих радиусов клиентов, к которым они относятся.
SELECT pur.contact_id AS purchaser, count(pot.*) AS nearby_potential_customers
FROM purchasers_geocoded pur, potential_customers_geocoded pot
WHERE ST_DWithin(pur.geom,pot.geom,1000)
GROUP BY purchaser;
У кого-нибудь есть совет, как поступить?
EDIT:
С некоторой помощью я написал этот запрос, который, похоже, выполняет свою работу, но сейчас я проверяю.
WITH prequalified_leads_table AS (
SELECT *
FROM nearby_potential_customers
WHERE market_val > 80000
AND market_val < 120000
)
, proximate_to_existing AS (
SELECT pot.prop_id AS prequalified_leads
FROM purchasers_geocoded pur, prequalified_leads_table pot
WHERE ST_DWithin(pot.geom,pur.geom,100)
)
SELECT prequalified_leads, count(prequalified_leads)
FROM proximate_to_existing
GROUP BY prequalified_leads
ORDER BY count(*) DESC;