@cat_crash

MySQL запрос с данными из одной и той же таблицы. Как написать?

Есть таблиица stock_data хранящая данные о ценах на акции
Для расчета некоторых финансовых показателей мне нужно сделать запрос который мог бы 3 раза JOINить одну и ту же таблиицу но с разными условиями:
- Выбрать данные хранящие разные Тикеры (ticker_id) чтоб сравнить их стоимость в один и тот же день (это не сложно)
- Выбрать эти же данные (отдельными колонками) только за предыдущий период
(Упрощенно таблица выглядит:
id|date|ticker_id|close )
Итого что есть (но не работает)
SELECT
	data1.*,
	data2.*,
	data1.close/data2.close as ratio_of_price,
	(select * from stock_data where date<data2.date and ticker_id=504 order by date desc limit 1) as new_id //нельзя указывать * тк ожидается только 1 колонка а не множество
FROM
	stock_data data1
	LEFT JOIN stock_data data2 ON data1.date = data2.date
WHERE
	data1.ticker_id = 504 
	AND data2.ticker_id = 289


если во вложенном запросе поменять на id - то в теории его можно было бы джоинить, но . увы тоже не получается
SELECT
	data1.*,
	data2.*,
	data1.close/data2.close as ratio_of_price,
	(select id from stock_data where date<data2.date and ticker_id=504 order by date desc limit 1) as new_id
FROM
	stock_data data1
	LEFT JOIN stock_data data2 ON data1.date = data2.date
// невозможно приджоинить по new_id тк ругается что нет такого поля
WHERE
	data1.ticker_id = 504 
	AND data2.ticker_id = 289
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы