gpt4 book ai didi

Mysql,按时间间隔获取不同值计数

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

我在表中有一系列基于时间的 mysql 数据点。假设间隔为每秒 1 次,最多可用限制为 30000 秒。这些值始终相同或随着时间值的增加而减小,并以指数递减的方式减小(开始快,然后非常慢地接近结束)。确切的比率尚未确定或未知。因此,例如:

duration_seconds, value
1, 900
2, 898
3, 897
...
1000, 300
1001, 300
1002, 299
1003, 299
...
15000,100
..
20000,99
..
30000,99

首先,数字始终是唯一的,或者每秒 1 个唯一值。中间每分钟可能有 30 个唯一值。最后,每 30 分钟可能有 1 个唯一值。

我想确定整个过程中足够范围内每分钟唯一值的数量,以模拟该曲线。我只需要存储唯一的值,但我想知道插入所有数据的频率。

我想使用一个查询来基本上完成此操作,时间间隔最多为 30000。例如 300 秒。并获取每个范围内唯一值的计数。我可以使用某种分组方法吗?

SELECT 0,300,count(distinct value) FROM data WHERE duration_seconds >= 0 AND duration_seconds <= 300;
SELECT 300,600,count(distinct value) FROM data WHERE duration_seconds >= 300 AND duration_seconds <= 600;
SELECT 600,1200,count(distinct value) FROM data WHERE duration_seconds >= 600 AND duration_seconds <= 1200;
...

一个子问题可能是,如何根据变化率确定理想范围?例如,开始时 0-300 很好,但中途 1200-3600 可能更好,结束时 20000-30000 可能最好,因为分数最终变化不大。

最佳答案

您应该能够执行如下操作来查找每 300 个单位范围内的值

SELECT (duration-1) DIV 300 * 300 AS low
, (duration-1) DIV 300 * 300 + 300 AS high
, COUNT(DISTINCT value)
FROM data
GROUP BY low, high
ORDER BY low, high;

关于Mysql,按时间间隔获取不同值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159647/

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