SQL列A到列B比较

时间:2014-08-12 14:29:47

标签: sql ms-access

我想确定A列中相同值在B列中具有相同对应值的次数?我需要一些东西来查看A列中的相同值,看看它们相应的B值是否相等。在下面的示例中,对于Col A中的所有164,其B值不匹配。对于25,他们的B值匹配。对于13,他们的B值匹配。因此,结果应返回2/3,因为A列匹配中的3个值中有2个。如何使这个行工作数百行?

Col A        Col B   
--------------------
 164          42  
 164          51  
 164          13  
 25           10  
 25           10  
 13            4  
 13            4

2 个答案:

答案 0 :(得分:1)

查看计数的基本方法:

SELECT A.A,
       COUNT(A.A) AS NUM_A,
       COUNT(B.B) AS NUM_B_MATCH,
FROM TABLE A
LEFT JOIN TABLE B ON A.A = B.B 
GROUP BY A.A

获得2/3

SELECT SUM(iff(B.B IS NOT NULL,1,0)) / COUNT(A.A) AS Percent
FROM TABLE A
LEFT JOIN TABLE B ON A.A = B.B 

答案 1 :(得分:0)

您可以使用嵌套的group by执行此操作。这是MS Access SQL:

select avg(AllSame)
from (select colA,
             iif(min(colB) = max(colB), 1.0, 0.0) as AllSame
      from table as t
      group by colA
     ) as t;

子查询生成一个标志,指定colA中每个值的所有值是否相同。外部查询然后计算比例。