gpt4 book ai didi

mysql - 一个简单的mySQL查询+统计分析

转载 作者:行者123 更新时间:2023-11-29 10:10:48 25 4
gpt4 key购买 nike

我正在一个包含大约 100 万条记录的数据库中寻找模式。我一直在使用 Keras 和 TensorFlow,特别是 LSTM 进行一些实验,

但是,由于我是该领域的新手,因此我发现执行一些非常具体的查询可以获得更好的结果。

下表包含以下数据:

round   value   class       creacion
1 15.49 H 2018-01-27 14:03:54
2 7.42 H 2018-01-27 14:04:42
3 1.04 L 2018-01-27 14:39:28
4 2.71 H 2018-01-27 14:39:36
5 1.95 L 2018-01-27 14:39:59
6 4 H 2018-01-27 14:40:17
7 4.4 H 2018-01-27 14:40:45
8 1.52 L 2018-01-27 14:41:14
9 28.69 H 2018-01-27 14:41:28
10 7.44 H 2018-01-27 14:42:25
11 1.1 L 2018-01-27 14:43:02
12 1.1 L 2018-01-27 14:43:12
13 1.41 L 2018-01-27 14:43:21
14 1.04 L 2018-01-27 14:53:10
15 1.66 L 2018-01-27 14:53:19
16 8.44 H 2018-01-27 14:53:34
17 1.55 L 2018-01-27 14:54:13
18 2.39 H 2018-01-27 14:55:29
19 2.9 H 2018-01-27 14:55:50
20 1.66 L 2018-01-27 14:56:13
21 2.7 H 2018-01-27 14:56:29
22 7.53 H 2018-01-27 14:56:51
23 2.04 H 2018-01-27 14:57:28
24 1.97 L 2018-01-27 14:57:47
25 1.35 L 2018-01-27 14:58:05

如您所见,我将所有低于 2 的值分类为“L”(低)值,将大于 2 的值分类为 H(高)值。

所以这里的主要目标是尝试预测下一个值。

我一直在使用这个查询,它对 100 个值求和,将高值视为 2,将低值视为 1。以下查询对最后 100 个结果求和,并提供一个数字作为输出,假设该数字低于中位数,我们可以预测获得高值的机会会增加。

SELECT SUM(n)
FROM (
SELECT *, IF(value < 2, @nvalue := 1, @nvalue := 2) AS n
FROM crawler
ORDER BY round DESC
LIMIT 0, 100
) AS sub

所以,第一个问题是关于查询的:

我想创建一个新列,添加前 100 个值的总和。你知道如何做到这一点吗?

我可以通过以下查询复制结果:

SELECT round, value, class, creacion, sum(n)
FROM (
SELECT *, if(value < 2, @nvalue := 1, @nvalue := 2) AS n
FROM crawler
ORDER BY round DESC
LIMIT 0, 100
) AS sub

但是,它显然只显示最后一条记录:

round   value   class   creacion                sum(n)
560894 3.24 hi 2018-06-22 22:58:59 162

当我实际上正在寻找相同的结果时,但每个记录都有一个限制以避免较长的加载时间。

最佳答案

获取最后一百个值的简单方法是:

select c.*,
(select sum(c2.value)
from (select c3.*
from c3
where c3.creation <= c.creation
order by c3.creation desc
limit 100
) c2
) as sum_last100
from crawler c;

由于相关子句有两层深度,MySQL 不接受这一点。

在 MySQL 8+ 中,这要容易得多:

select c.*,
sum(value) over (order by creation rows between 99 preceding and current row) as sum_last100
from crawler c;

此时,我可能建议您切换到 MySQL 8 或其他数据库(例如 Postgres)。在旧版本的 MySQL 中,让您想要的查询高效地处理一百万行可能不值得。

关于mysql - 一个简单的mySQL查询+统计分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996465/

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