1

我有一个带有以下列的表名股票;

Stockcode  Hig   low   Close   Date
MSFT     | 100 |  90 |  95   |2013-09-18
MSFT     | 105 |  96 |  97   |2013-09-17
MSFT     | 104 |  92 |  91   |2013-09-16
MSFT     | 101 |  88 |  100  |2013-09-13

我想从 Date 列中列出最近 3 天的 Low 列中的最低值。

我尝试了以下查询,但它只是给了我所有日子而不是过去 3 天的最低值。

SELECT `LOW` 
  FROM `stocksdata` 
  WHERE `STOCKSYMBOL` = "MSFT" 
  ORDER by TIMESTAMP 
  DESC LIMIT 1;

我怎么能SELECT得到过去 3 天的值?

4

4 回答 4

0
SELECT LOW 
FROM stocksdata 
WHERE STOCKSYMBOL = 'MSFT' 
AND date BETWEEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND NOW() 
ORDER by date DESC LIMIT 1 
于 2013-09-17T19:04:11.690 回答
0

我对您的列名有些困惑,但是您需要将 mysql MIN() 函数与 WHERE 子句结合使用,该子句将数据限制在您寻找的日期范围内。你能试试这个并告诉我吗?

select min(`LOW`) from `stocksdata` where `Stockcode` = "MSFT" and `Date` > DATE_SUB(now(), interval 3 day);
于 2013-09-17T19:15:01.610 回答
0

尝试这个:

select min(low) 
from stocks 
where stockcode = 'MSFT' 
and date BETWEEN CURDATE() -INTERVAL 3 DAY AND CURDATE()
于 2013-09-17T19:06:50.860 回答
0

根据您的数据,您正在寻找过去三个交易日的最低值:

select min(low) from(
    SELECT
        `LOW` 
    FROM `stocksdata` 
    WHERE
        `STOCKSYMBOL` = "MSFT" 
    ORDER by 
        TIMESTAMP DESC LIMIT 3) ltd
于 2013-09-17T19:45:36.113 回答