Я новичок в sql запросах.
Таблица определяется как
( symbol varchar,
high int,
low int,
today date,
Primary key (symbol, today)
)
Мне нужно найти для каждого символа в заданном диапазоне дат max(high)
и min(low)
и соответствующие даты для max(high)
и min(low)
.
- Хорошо, чтобы получить первую максимальную дату и минимальную дату в данной таблице.
- В данном диапазоне дат некоторые даты могут отсутствовать. Если начальная дата не указана, следует использовать следующую дату, а если последняя не указана, следует использовать более раннюю доступную дату
Данные за один год и около 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