3

私はこのようなテーブルを持っています(簡略化):

+------+--------+
| tick | value  |
+------+--------+
|    1 |     10 |
|    2 |     20 |
|    5 |     50 |
|    7 |     10 |
|   10 |     85 |
+------+--------+

からまでのすべての数値をティック値として含む別のテーブルを生成したい:min(tick)max(tick)

+------+--------+
| tick | value  |
+------+--------+
|    1 |     10 |           * already exists
|    2 |     20 |           * already exists
|    3 |     30 | = 20 + 10
|    4 |     40 | = 30 + 10
|    5 |     50 | = 40 + 10 * already exists
|    6 |     30 | = 50 - 20
|    7 |     10 | = 30 - 10 * already exists
|    8 |     35 | = 10 + 25
|    9 |     60 | = 35 + 25
|   10 |     85 | = 60 + 25 * already exists
+------+--------+

明確にするために、

  1. 連続していないティック値があり、不足しているティックを挿入したいと考えています。
  2. これを別のテーブルで行いたいので、元のテーブルは変更されません。
  3. value欠落しているs の s は、前の既存のティックから次の既存のティックまで等しいステップtickとして増加/減少します。疑似式として:
    increment = (next_value - current_value) / (next_tick - current_tick)

これを管理する方法は?

4

2 に答える 2

0

まず、数値テーブルを作成します

Create Table ALL_NUMBERS (
   N Integer
)

Alter table ALL_NUMBERS add primary key (n);

次に、数値テーブルを1から100万のような大きな数値まで入力します。

次に、データテーブルをこの数値テーブルに左結合し、ギャップを埋めます。

于 2012-09-04T14:03:40.310 に答える