0

今週、株価が 5% 変化したかどうかを確認したい. 毎日の価格をキャプチャするデータがあります。次のようにして、過去 7 日間の行を取得できます。

select price from data where date(capture_timestamp)>date(current_timestamp)-7;

しかし、それをどのように分析して、価格が 5% 上昇したか下落したかを確認するにはどうすればよいでしょうか? 1 つの SQL ステートメントでこれらすべてを行うことは可能ですか? その結果を新しいテーブルに挿入できるようにしたいのですが、最初にシェルで出力することに集中したいだけです。

ありがとう。

4

2 に答える 2

1

データと呼ばれるテーブルに在庫が 1 つしかないのは奇妙に思えます。次のクエリのように、先週と今日の値の 2 つの行をまとめる必要があります。

select d.price
from data d cross join
     data dprev
where cast(d.capture_timestamp as date = date(current_timestamp) and
      cast(dprev.capture_timestamp as date) )= cast(current_timestamp as date)-7 and
      d.price > dprev.price * 1.05

データ テーブルに株価情報が含まれている場合、クロス結合は等結合になります。

于 2012-05-12T17:22:33.623 に答える
0

実行したい計算には、次のサブクエリからのクエリを使用できる場合があります。これは、1 日に 1 つのレコードを想定しています。前の 7 行はリテラルです。

SELECT ticker, price, capture_ts
      ,MIN(price) OVER (PARTITION BY ticker ORDER BY capture_ts ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS min_prev_7_records
      ,MAX(price) OVER (PARTITION BY ticker ORDER BY capture_ts ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS max_prev_7_records
  FROM data
于 2012-05-12T18:50:21.330 に答える