0

データベースに2つのテーブルがあります。

最初のテーブル

ID | IDの数
------------------
1 | 2
2 | 3
3 | 4
4 | 1
5 | 3

2番目のテーブル

ID | IDの数
------------------
1 | 1
2 | 2
3 | 3
4 | 5
5 | 7

ここで、IDの数を最初のテーブルから2番目のテーブルに分割してから、最初のテーブルの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で表示していることです。

現在の出力(間違ったもの)

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

クエリを実行すると、2つのテーブルの直積が生成されますfrom FirstTable t1, SecondTable t2JOIN代わりにそれら:

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 に答える