0

これが私の問題です:

それぞれが状態番号に関連付けられている、未知の数のランダム イベントがあります。ここで、ランダムなイベントの割り当ての組み合わせを説明する全体的な状態番号が必要です。たとえば、V1 と V2 の 2 つのランダム イベントのみがあり、それぞれに 2 つの可能な状態がある場合、以下は予想されるマッピングであり、大きな V は予想される全体的な状態番号です。

V v1 v2

1 1  1

2 2  1

3 1  2

4 1  2

私のドラフトSQLクエリは次のとおりです。

select t1.v1, t2.v2 from table1 as t1
  cross join table2 as t2

ここで、t1.v1 と t2.v2 から生成された大きな V が必要です。数学アルゴリズムは知っていますが、SQL コードは知りません。数学アルゴリズムは、2 つの確率変数に対して V = v1 + Max(v1)*(v2-1) になります。私の問題は、2 つ以上の確率変数がある場合に対処する必要があるかもしれません。

4

1 に答える 1

1

これには、サブクエリまたはウィンドウ関数のいずれかを使用できます。サブクエリはより明確になると思います:

select v1 + maxv1*(v2 - 1) as V, t1.v1, t2.v2
from table1 t1 cross join
     table2 t2 cross join
     (select max(v1) as maxv1 from t1) maxt

ところで、SQL では非常に簡単に連番を割り当てることができます。

select row_number() over (order by v2, v1) as V, v1, v2
from table1 t1 cross join
     table2 t2
于 2013-03-05T00:26:05.410 に答える