2015-05-15 3 views
4

У меня есть таблица, состоящая из ежедневных данных фондового рынка. Он состоит из различного количества строк для каждого дня. У меня есть столбец с именем «Высокий» в таблице. Теперь мне нужно вычислить MAX (Высокий) за последние 3 недели. Например: если сегодня среда, мне нужно рассчитать MAX пятницы прошлой недели и на этой неделе, вторник. Я знаю, что могу это сделать, если я знаю дату вручную, используя такой запрос.Как забрать последние 3 данных за последние 3 недели со дня

Select MAX(HIGH) from table_name where date>='date' 

Но я не хочу этого делать, я просто хочу автоматизировать это с помощью программы, написанной на PHP. Как я могу получить эту помощь в PHP или SQL. Моя таблица только имеет 6 колонок

date,time,open,high,low,close 

говорят, предположим, если мой стол как этот

date  time  open  high  low  close 
2015-05-06 09:30:00 2012.50 2020.5 2016.5 2014.0 
2015-05-06 09:31:00 2013.50 2021.5 2014.5 2016.0 
2015-05-06 09:32:00 2014.50 2021.75 2017.5 2013.0 
2015-05-07 09:30:00 2011.50 2019.5 2018.5 2014.0 
2015-05-07 09:31:00 2014.50 2022.5 2016.5 2015.0 
2015-05-07 09:32:00 2012.50 2026.5 2017.5 2016.0 
2015-05-08 09:30:00 2010.50 2024.5 2015.5 2017.0 
2015-05-08 09:31:00 2013.50 2026.5 2017.5 2018.0 
2015-05-08 09:32:00 2014.50 2028.5 2015.5 2019.0 
2015-05-08 09:33:00 2014.50 2022.5 2017.5 2012.0 
2015-05-11 09:30:00 2017.50 2025.5 2018.5 2013.0 
2015-05-11 09:31:00 2018.50 2027.5 2019.5 2016.0 
2015-05-11 09:32:00 2019.50 2024.5 2011.5 2017.0 
2015-05-11 09:33:00 2020.50 2026.5 2017.5 2014.0 
2015-05-12 09:30:00 2018.50 2023.5 2018.5 2018.0 
2015-05-12 09:31:00 2017.50 2024.5 2017.5 2014.0 
2015-05-12 09:32:00 2018.50 2023.5 2018.5 2013.0 
2015-05-12 09:33:00 2017.50 2024.5 2019.5 2014.0 
2015-05-12 09:34:00 2016.50 2023.5 2016.5 2012.0 
2015-05-12 09:35:00 2017.50 2025.5 2018.5 2011.0 

и если текущая дата 2015-05-13 (среда) мне нужно MAX (высокий) в прошлом 3 недельных дней, т.е. 2015-05-12,11,08, что составляет 2028,5.

+0

Это действительно хороший вопрос. Я думаю, что это может быть немного улучшено с некоторыми примерами данных и ожидаемыми результатами, чтобы другие могли точно видеть, что вы ищете. – AdamMc331

+0

Открытые и закрытые ключевые слова, вы должны изменить имена столбцов –

+1

^Итак, дата и время, просто бросая это туда. – AdamMc331

ответ

3

Предположительно, у вас есть только данные о «недельных днях».

select max(high) 
from table_name t join 
    (select date 
     from table_name 
     group by date 
     order by date desc 
     limit 3 
    ) dates 
    on t.date = dates.date; 

Предположительно, вы либо хотите условие на складе или group by, но это зависит от вашего запроса выборки.

Вы можете сделать это более эффективным, добавив предложение where. Как правило, последние три рабочих дня будет в течение последней недели, или так:

select max(high) 
from table_name t join 
    (select date 
     from table_name 
     where date >= date_sub(curdate(), interval 7 day) 
     group by date 
     order by date desc 
     limit 3 
    ) dates 
    on t.date = dates.date; 
+0

Я понимаю его вопрос как спрашивать, как это сделать в PHP? –

0

Я думаю, что это правильный запрос:

select top 3 date, max(high) from table_name order by date desc 
1

Вы можете использовать DATE_SUB функцию для этого случая:

select max(high) from table_name where date > date_sub(date, INTERVAL 3 DAY); 
Смежные вопросы