2016-07-11 41 views
0

假设一个表t如下比较两个不同的组列不同的值:SQL用于在一个表

 
    c1 c2 
    == == 
    a 1 
    a 2 
    b 1 
    b 2 
    b 3 
    c 4 
    c 2 

我们基本表由c1和具有三个组A,B,C。 我需要计算柱C2的相似两组之间,如下所示:

 

    sim(a,b) = 2(common value of c2 are 1 and 2)/3(all value)=2/3 
    sim(b,c) = 1(b and c has only one value 2 in common)/4 = 1/4 
    sim(a,c) = 1/3 

我们可以使用SQL(的Oracle 11g语法第一)中,构建上述表达?

+0

标签您与您正在使用的数据库的问题。 –

回答

0

我相信这个查询你想要做什么:

select t1.c1, t2.c1, count(*) as NumInCommon, 
     (select count(distinct t.c2) 
     from t 
     where t.c1 in (t1.c1, t2.c1) 
     ) as NumInTotal 
from t t1 join 
    t t2 
    on t1.c2 = t2.c2 
group by t1.c1, t2.c1 
+0

这个在oracle运行的sql会显示,按语法分组错! –

相关问题