查找基于位置的数据之间的相关性

时间:2018-07-05 22:25:38

标签: python mysql sql tableau

我正在尝试在MySQL数据库中查找一些基于位置的数据之间的相关性,在该数据库中我们存储有关客户和合作伙伴的信息。每个客户都有一个各自的geo_zip_codegeo_region的字段,每个合作伙伴也是如此。当客户进入我们的系统时,他们会收到来自三个不同合作伙伴的报价。我想根据客户的geo_zip_codegeo_region字段,查看客户是否更有可能接受合作伙伴位于同一geo_zip_codegeo_region中的报价客户与三个合作伙伴之一之间的匹配项的表。但是,我不知道从哪里开始才能做到这一点。如果可能,如何在MySQL中执行此操作?否则,如果您不想彻底回答,欢迎您直接向我提出指示,使我可以找到有关解决方法的信息。另外,如果可以在Tableau或Python中执行此操作,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

这应该是一个很好的起点。当然,我没有您的表名。

DECLARE @total_matches INT 
DECLARE @non_matches INT 
DECLARE @region_or_zip_matches INT 
-- this will return a count of all matches 
SELECT @total_matches = COUNT(m.'8')
FROM Matches as m 
-- this will return a count of matches where there is no zip/region match 
SELECT @non_matches = COUNT('8') 
FROM Matches  AS m 
INNER JOIN Clients AS c 
    ON c.client_id = m.client_id
INNER JOIN Partners AS p 
    ON p.partner_id = m.partner_id
WHERE 
AND c.geo_region IS NOT NULL --not null's may be unnecessary based on column criteria. 
AND p.geo_region IS NOT NULL 
AND c.geo_zip_code IS NOT NULL 
AND p.geo_zip_code IS NOT NULL 
AND (c.geo_region != p.geo_region
AND c.geo_zip_code != p.geo_zip_code)

SET @region_or_zip_matches = @total_matches - @non_matches

SELECT (CAST(@region_or_zip_matches AS FLOAT) / CAST(@total_matches AS FLOAT) * 100;