繁体   English   中英

MySQL 数据库中的最小值

[英]Min value from Database in MySQL

我试图找到过去 30 天的最小值,在我的表中每天有一个条目,我正在使用这个查询

SELECT MIN(low), date, low 
FROM historical_data 
WHERE name = 'bitcoin' 
ORDER BY STR_TO_DATE(date,'%d-%m-%Y') DESC 
LIMIT 7

但是这个值没有返回正确的值。 我的表的结构是

表结构在此处输入图片说明

存储的表数据是这样的

表格数据样式在此处输入图片说明

现在我需要的是获得最小的低值。 但是我的查询不起作用它给了我错误的值,甚至在表中也不存在。

更新:

这是我更新的表结构。 在此处输入图片说明

这是我在这张表中的数据,看起来像这样在此处输入图像描述

现在,如果你看一下数据,我想检查令牌的名称omisego和混帐从过去7天的低价值,这将是自2017-12-252017-12-19 ,并在这个转换的低值9.67 ,但我当前的查询和我的某个成员建议的查询没有带来正确的答案。

更新 2:

http://rextester.com/TDBSV28042

在这里,基本上我有超过1400 coinstoken历史数据,这意味着我将有超过 1400 个条目与2017-12-25相同的日期但名称不同,我总共有超过650000条记录。 所以每个日期都有许多不同名称的条目。

要获得每组最低的行,您可以使用以下内容

SELECT a.*
FROM historical_data a 
LEFT JOIN historical_data b ON a.name = b.name 
AND a.low > b.low
WHERE b.name IS NULL
AND DATE(a.date) >= '2017-12-19' AND DATE(a.date) <= '2017-12-25' 
AND a.name = 'omisego'

或者

SELECT a.*
FROM historical_data a 
JOIN (
    SELECT name,MIN(low) low
    FROM historical_data
    GROUP BY name
) b USING(name,low)
WHERE  DATE(a.date) >= '2017-12-19' AND DATE(a.date) <= '2017-12-25' 
AND a.name = 'omisego'

演示

对于 7 天或 n 天的最后 30 天,您可以将上述查询写为

SELECT a.*, DATE(a.`date`)
FROM historical_data2 a 
LEFT JOIN historical_data2 b ON a.name = b.name 
AND DATE(b.`date`) >= CURRENT_DATE() - INTERVAL 30 DAY 
AND DATE(b.`date`) <= CURRENT_DATE()
AND a.low > b.low
WHERE b.name IS NULL
AND a.name = 'omisego'
AND DATE(a.`date`) >= CURRENT_DATE() - INTERVAL 30 DAY
AND DATE(a.`date`) <= CURRENT_DATE()
;

演示

但请注意,它可能会返回多个低值相同的记录,要在其中选择 1 行,您必须在不同的属性上指定另一个条件

考虑将相同的分组并运行子句

SELECT name, date, MIN(low)
FROM historical_data 
GROUP BY name
HAVING name = 'bitcoin' 
AND STR_TO_DATE(date, '%M %d,%Y') > DATE_SUB(NOW(), INTERVAL 30 DAY);

鉴于结构,上面的查询应该会得到你的结果。

// 试试这个代码 ..

SELECT MIN(`date`) AS date1,low
        FROM historical_data
 WHERE `date` BETWEEN now() - interval 1 month 
                  AND now() ORDER by low ASC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM