0

我的数据库中有两个表。

第一个表

身份证 | 身份证件数
------------------
1 | 2
2 | 3
3 | 4
4 | 1
5 | 3

第二张表

身份证 | 身份证件数
------------------
1 | 1
2 | 2
3 | 3
4 | 5
5 | 7

现在,我想将第一个表的 ID 计数划分为第二个表,然后按第一个表的 ID 分组。

基本上预期的输出是

身份证 | 熵
------------------
1 | 2
2 | 1.5
3 | 1.3
4 | 0.2
5 | 0.42

我的查询:

 Select t1.ID, Sum(t1.[Count of ID's]/t2.[Count of ID's])
 from FirstTable t1, SecondTable t2 
 group by t1.ID;

我认为我没有有效地使用该组。有人可以帮我吗?

我遇到的问题是总和是聚合所有值 (2+1.5+1.3+0.2+ 0.42= 5.42) 并与每个 ID 一起显示。

电流输出(错一个)

身份证 | 熵
------------------
1 | 5.42
2 | 5.42
3 | 5.42
4 | 5.42
5 | 5.42

谢谢。

4

2 回答 2

1

您需要定义在ON子句中定义它们关系的列。

SELECT  a.ID,
        a.[Count of IDs] * 1.0 / b.[Count of IDs] * 1.0 Entropy
FROM    FirstTable a
        INNER JOIN secondTable b
            ON a.ID = b.ID

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-25T14:17:09.510 回答
1

您的查询产生两个表的笛卡尔积,因为from FirstTable t1, SecondTable t2. JOIN他们改为:

Select t1.ID, Sum(1.0 * t1.[Count of ID's]/t2.[Count of ID's]) AS Entropy
from FirstTable t1
INNER JOIN  SecondTable t2 ON t1.id = t2.id
group by t1.ID;
于 2013-03-25T14:17:17.893 回答