私はSQLクエリが初めてです。テーブルは次のように定義されます
( symbol varchar,
high int,
low int,
today date,
Primary key (symbol, today)
)
特定の日付範囲の各シンボルと、 および の対応する日付を検索する必要max(high)
がmin(low)
ありmax(high)
ますmin(low)
。
- 指定されたテーブルで最初の最大日付と最小日付を取得できます。
- 特定の日付範囲では、一部の日付が欠落している場合があります。開始日が存在しない場合は次の日付を使用する必要があり、最終日が存在しない場合は以前の利用可能な日付を使用する必要があります
データは 1 年間で、約 5000 シンボルです。
私はこのようなことを試しました
SELECT a.symbol,
a.maxValue,
a.maxdate,
b.minValue,
b.mindate
FROM (
SELECT table1.symbol, max_a.maxValue, max_a.maxdate
FROM table1
INNER JOIN (
SELECT table1.symbol,
max(table1.high) AS maxValue,
table1.TODAY AS maxdate
FROM table1
GROUP BY table1.symbol
) AS max_a
ON max_a.symbol = table1.symbol
AND table1.today = max_a.maxdate
) AS a
INNER JOIN (
SELECT symbol,
min_b.minValue,
min_b.mindate
FROM table1
INNER JOIN (
SELECT symbol,
min(low) AS minValue,
table1.TODAY AS mindate
FROM table1
GROUP BY testnsebav.symbol
) AS min_b
ON min_b.symbol = table1.symbol
AND table1.today = min_b.mindate
) AS b
ON a.symbol = b.symbol