データベースに証券価格のデータセットがあります。データは次のように構成されています2つの条件に基づくSQL一致行
id security_id time_to_maturity price
001 01 1.5 100.45
002 01 1.3 101.45
003 01 1.1 102.45
004 01 1.02 101.45
005 01 1.0 101.45
006 03 22.3 94.45
007 03 22.1 96.45
008 03 21.8 98.45
009 05 4.2 111.45
010 05 4.1 112.45
011 05 3.8 111.45
...
idがrow_id
とsecurity_id
ある各セキュリティのIDです。私は各セキュリティのための特定の時間範囲からのデータだけを取得しようとしています。最初に私はminとmaxとの違いを見つけて、最終的には、このような最小値よりも10%以上である値を見つけ、その後、各セキュリティIDの最小値と最大値を見つけるためのクエリを実行します。
SELECT security_id, MIN(time_to_maturity), MAX(time_to_maturity),
MAX(time_to_maturity) - MIN(time_to_maturity) tDiff,
((MAX(time_to_maturity) - MIN(time_to_maturity)) * .1) + MIN(time_to_maturity)
FROM db1
group by security_id
order by security_id
これが与えます私以下:
security_id min() max() diff min+(diff*.1)
01 1.0 1.5 .5 1.05
03 21.8 22.3 .5 21.85
05 3.8 4.2 .4 3.84
は最後に、私がやりたいものを各security_id
time_to_maturity is < min+(diff*.1)
についてのみ行セットのメインデータから選択されます。
security_idでデータをサブセット化するループが必要だと感じたら、それをどのように構造化するのかは分かりません。time_to_maturity is < min+(diff*.1)
。
id security_id time_to_maturity price
004 01 1.02 101.45
005 01 1.0 101.45
008 03 21.8 98.45
011 05 3.8 111.45
任意の提案:
答えは次のようになりますか?
は、MySQL程度、またはSQL Serverに関するご質問ですか?彼らは同じことではありません。 –