我有两个表(X和Y),例如将一个足球运动员映射到一个团队。表X中的数据可靠,但我不确定表Y中数据的可靠性。表X有3,000行,表Y有1,000行。如何通过将表Y中的数据用作真集或超集来计算表Y中的映射的精确度?
表X
cnames[indx - 1]
表Y
PlayerID | Name | Team
007 | Sancho | Dortmund
010 | Messi | Barcelona
011 | Werner | Chelsea
001 | De Gea | Man Utd
009 | Lewan..ki | Bayern Mun
006 | Pogba | Man Utd
017 | De Bruyne | Man City
029 | Harvertz | Chelsea
005 | Upamecano | Leipzig
根据表X,我们可以看到只有玩家ID 006和017是正确的。但是,playerID 006映射到两个不同的团队时,部分准确。
答案 0 :(得分:2)
您可以left join
并使用条件逻辑来计算准确性。
在MySQL中,您可以这样表达:
select avg(y.playerID is not null) as accuracy_ratio
from x
left join y
on y.playerID = x.playerID
and y.name = x.name
and y.team = x.team
这将为您提供介于0
和1
之间的值,该值表示准确率(如果需要百分比,可以将其乘以100)。
请注意,这某种程度上假设playerID
唯一地标识了两个表中的记录。