私は次のテーブルを持っています:
tweets stocks
------------------------------------- -----------------------------
id stock_id nyse_date class quality stock_id _date return
------------------------------------- -----------------------------
1 1 2011-03-12 3 1 2011-03-12 0.44
2 1 2011-03-12 1 1 2011-03-15 0.17
3 1 2011-03-15 2 2 2011-03-15 -0.03
4 2 2011-03-15 2
5 2 2011-03-16 1
次の式を評価し、quality
SQLのみを使用して列に結果を入力する必要があります。
IF (class_value of tweet/return on that day) > 0 THEN quality = 1 ELSE 0
class_valueは次のとおりです。
IF class = 1 THEN class_value = 0
IF class = 2 THEN class_value = 1
IF class = 3 THEN class_value = -1
ツイートごとに、(明らかに)その日の株式の返品を受け取る必要があります。週末の間、たとえば、の2011-03-16
場合、利用可能な在庫データはありません。その場合、quality
デフォルトでも0に設定する必要があります(エラーを返さないでください)。それでは、例の4つのツイートに対してこれを手動で実行しましょう。
id class class_value return class_value/return quality
-----------------------------------------------------------
1 3 -1 0.44 -1/0.44 = -2.27 0
2 1 0 0.44 0/0.44 = 0 0
3 2 1 0.17 1/0.17 = 5.88 1
4 2 1 -0.03 1/-0.03 = -33.33 0
5 1 0 n/a 0
したがって、クエリの最終結果は更新されたtweets
テーブルになります。
tweets
-------------------------------------
id stock_id nyse_date class quality
-------------------------------------
1 1 2011-03-12 3 0
2 1 2011-03-12 1 0
3 1 2011-03-15 2 1
4 2 2011-03-15 2 0
5 2 2011-03-16 1 0
これらすべてをクエリに入れる方法がわかりません。これができましたが、クラスを選択して返すだけでclass_value
、式を設定または実装しません。
UPDATE tweets SET quality = (
SELECT t.class, s.return FROM tweets t
LEFT JOIN stocks s ON t.nyse_date = s._date
)
どんな助けでも大歓迎です:-)