gpt4 book ai didi

mysql - SQL 聚合未执行

转载 作者:行者123 更新时间:2023-11-29 18:17:55 24 4
gpt4 key购买 nike

我正在尝试在本地 MySQL 数据库上运行以下查询。尽管数据库大小只有几 MB,但查询会无限期地运行然后取消。目标是找出股票在过去 30 天内的标准差;附加条件是选择最近30天内最高股价低于当前一半的股票。

任何帮助将不胜感激。

谢谢

SELECT T1.id, FORMAT(STD(T1.price_usd),4) as a from ticker T1
INNER JOIN ticker T2 ON T1.id = T2.id
WHERE T2.price_usd < ( Select max(price_usd) from ticker where last_updated
>= 1508550264 - (60*60*24*30) )/2
AND
T1.last_updated > 1508550264 - (60*60*24*30) Group by ID HAVING a < 0.01;

以下是一些需要澄清的示例数据:

stock     last_updated     price_usd
amazon 12th Oct 2017 10
amazon 13th Oct 2017 20
amazon 14th Oct 2017 30
amazon 15th Oct 2017 50
google 12th Oct 2017 50
google 13th Oct 2017 20
google 14th Oct 2017 30
google 15th Oct 2017 10

在此示例中,将选择 google,但不会选择 amazon,因为 google 的最新价格不到其最高价格的一半。第二部分是计算 google 的标准差。

最佳答案

您可以通过按降序排列股票名称(亚马逊、谷歌)的记录并使用 LIMIT 获取第一个结果来获取该股票名称的最新条目。

select
stockname,
format(std(price_usd), 4) as standard_deviation
from ticker
where last_updated > current_date - interval 30 day
group by stockname
having max(price_usd) / 2 >
(
select latest.price_usd
from ticker latest
where latest.stockname = ticker.stockname
order by latest.last_updated desc
limit 1
)
order by stockname;

关于mysql - SQL 聚合未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com