それは(にはっきりしていない行を選択し、その後、日付昇順に基づいて各シンボルをランク付け私は何を返すか、または行を返すかどうかを指定する条件を指定します。
私たちが続けなければならないのは、各シンボルの「最初の14行」または「最初の14日」を除外するために、紛らわしい曖昧な説明です。
私たちが持っていないものは、データの再サンプリングサンプルまたは返される行の例です。
これがなければ、仕様の説明を理解できるかどうかを知る方法がなく、テスト結果を比較したり比較したりすることはありません。
ですから、基本的には推測しています。 (enthusiatss「これを試してみてください」が提供する解答の中で最も人気のある種類のようですどの。)
私はあなたの仕様に合うかもしれない、いくつかのパターンのいくつかの例を提供し、してもしなくてもよいことができます。
各 `symbol`に対して最も早く` histdate`を取得し、それに14日を追加するには、インラインビューを使用できます。インラインビューから返された日付の前に `histdate`を持つ行を除外するために、` historical_data`データに対して半結合を行うことができます。
(これは `histdate`列のデータ型がDATEであるという仮定に基づいている。)
SELECT hd.*
FROM (SELECT d.symbol
, MIN(d.histdate) + INTERVAL 14 DAY AS histdate
FROM historical_data d
GROUP BY d.symbol
) dd
JOIN historical_data hd
ON hd.symbol = dd.symbol
AND hd.histdate > dd.histdate
ORDER
BY hd.symbol
, hd.histdate
しかし、そのクエリは` relative_strength_index`テーブルへの参照を含んでいません。元の照会には、 `relative_strength_index`表の相関副照会を持つNOT EXISTS述部が含まれています。
目標が、そのテーブルからの各 `rsi_symbol`に対して最も早い` rsi_date`を取得し、その値に14日を追加する場合...
SELECT hd.*
FROM (SELECT rsi.rsi_symbol
, MIN(rsi.rsi_date) + INTERVAL 14 DAY AS rsi_date
FROM relative_strength_index rsi
GROUP BY rsi.rsi_symbol
) rs
JOIN historical_data hd
ON hd.symbol = rs.rsi_symbol
ON hd.histdate > rs.rsi_date
ORDER
BY hd.symbol
, hd.histdate
目標はrelative_strength_indexに一致する行がすでに存在する行を除外することであるならば、私はアンチ参加パターンを使用しますが...
SELECT hd.*
FROM (SELECT d.symbol
, MIN(d.histdate) + INTERVAL 14 DAY AS histdate
FROM historical_data d
GROUP BY d.symbol
) dd
JOIN historical_data hd
ON hd.symbol = dd.symbol
AND hd.histdate > dd.histdate
LEFT
JOIN relative_strength_index xr
ON xr.rsi_symbol = hd.symbol
AND xr.rsi_date = hd.histdate
WHERE xr.rsi_symbol IS NULL
ORDER
BY hd.symbol
, hd.histdate
は、これらは単なる例のクエリパターン、ありますあなたの正確な仕様には合っていない可能性があります。
詳細な仕様がなくても、他のパターンの例を提供することはあまり意味がありません。
私の質問は明確ではありませんでした。 relative_strength_indexテーブルではなく、historical_dataテーブルから削除された最初の14行が必要です。 – TerryDisplaced
ああ、外側の選択肢に限界を移動してください。 – Doug
これを行うと、最初のシンボルのhistorical_dataテーブルの最初の14行だけが取得されます。 – TerryDisplaced