来自另一个表的值不在Group by(SQL server)中工作

时间:2013-03-25 14:14:46

标签: sql sql-server sql-server-2008 tsql join

我的数据库中有两个表。

第一张表

ID | Count of ID's
------------------
1  | 2
2  | 3
3  | 4
4  | 1
5  | 3

第二张表

ID | Count of ID's
------------------
1  | 1
2  | 2
3  | 3
4  | 5
5  | 7

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

基本上预期的输出是

ID | Entropy
------------------
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。

电流输出(错误的一个)

ID | Entropy
------------------
1  | 5.42
2  | 5.42
3  | 5.42
4  | 5.42
5  | 5.42

感谢。

2 个答案:

答案 0 :(得分: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

要进一步了解联接,请访问以下链接:

答案 1 :(得分: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;