Я пытаюсь написать один запрос, используя 3 таблицы.
Таблицы и их столбцы, которые я буду использовать, являются:SQL получение средних значений с несколькими объединениями
Sec – ID, Symbol
Hss – Code, HDate, Holiday
Fddd – ID, Date, Price
Учитывая символ AAA
, мне нужно, чтобы получить ID из первой таблицы и сопоставить его с идентификатором из третьей таблицы. Дата второй таблицы должна соответствовать датам третьей таблицы с условием Code=1
и Holiday=1
.
Даты во второй и третьей таблице находятся в порядке возрастания с самыми последними датами внизу. Я хочу получить средние цены 50 day
и 200 day
. Даты в таблицах находятся в порядке возрастания, поэтому я хочу, чтобы они спускались и выбирали top 50
и 200
, чтобы получить средние цены.
До сих пор я могу получить только одно среднее. Я не могу добавить второй SELECT TOP 50
или добавить subquery
в течение второго avg()
.
SELECT AVG(TwoHun)TwoHunAvg --, AVG(Fifty) AS FiftyAvg
FROM (SELECT TOP 200 Fddd.price AS TwoHun --, TOP 50 Fddd.price AS Fifty
FROM Sec
JOIN Fddd
ON Sec.ID = Fddd.ID AND Sec.symbol = 'AAA'
JOIN Hss
ON Fddd.date = Hss.Hdate AND Hss.Code = 1 AND Hss.Holiday = 1
ORDER BY Fddd.Date DESC) AS tmp;
Заранее благодарен!
Возможно, вы захотите упомянуть базу данных, которую вы используете. – mustaccio
Это также поможет получить образцы данных для тестирования! Также ваш вопрос немного запутанный, пожалуйста, укажите 2 таблицы. Один с данными и один с тем, что вы хотите в качестве результатов. –
@mustaccio Я думаю, что это ms доступ или SQL-сервер. Ссылка: http://www.w3schools.com/sql/sql_top.asp –