【问题标题】:Values from another table not working in Group by(SQL server)另一个表中的值在 Group by(SQL 服务器)中不起作用
【发布时间】:2013-03-15 01:43:06
【问题描述】:

我的数据库中有两个表。

第一个表

身份证 |身份证件数 ------------------ 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

谢谢。

【问题讨论】:

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


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      您需要在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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        • 2023-01-24
        • 2020-12-26
        相关资源
        最近更新 更多