【问题标题】:sql for compare two distinct group column different values in one table用于比较一个表中两个不同组列不同值的sql
【发布时间】:2016-07-11 02:26:19
【问题描述】:

假设一个表t如下:

c1 c2 == == 一个 1 a2 乙 1 b 2 b 3 c 4 2

我们将该表按 c1 分组,并具有 a、b、c 三个组。 我需要计算两组之间 c2 列的相似度,如下所示:

sim(a,b) = 2(c2的共同值是1和2)/3(所有值)=2/3 sim(b,c) = 1(b 和 c 只有一个共同的值 2)/4 = 1/4 sim(a,c) = 1/3

我们可以使用sql(Oracle 11g语法优先)来构造上面的表达式吗?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql oracle11g variation


【解决方案1】:

我相信这个查询可以满足您的要求:

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

【讨论】:

  • 这个sql在oracle中运行会显示,group by syntax wrong!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2014-05-09
  • 1970-01-01
相关资源
最近更新 更多