gpt4 book ai didi

mysql - 选择时间戳 x 和时间戳 y 之间的数据,返回为 z 行数(缩小结果集)

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

我正在尝试在作为给定行数返回的 2 个给定时间戳之间选择数据。

需要考虑 3 个变量;

  • 时间戳 1
  • 时间戳2
  • 数据点数量

到目前为止,我已经有了这个(而且还可以),但没有返回所需的行数。在下面的查询中,我尝试在 2019-07-142019-07-15 之间选择 250 条记录,但它返回 48行。

SELECT
AVG(`value`) AS `avg`,
`createdAt` AS `dtime`,
`createdAt` * 1 AS `dtime_int`,
ROUND(
`createdAt` / (
(CONVERT('2019-07-15', DATETIME) - CONVERT('2019-07-14', DATETIME)
) / 250)
) AS `groupBy`
FROM `samples`
WHERE `createdAt` BETWEEN '2019-07-14' AND '2019-07-15'
GROUP BY `groupBy`
ORDER BY `dtime` DESC;

所以我猜这不是最好的方法。欢迎任何和所有建议!

编辑:这是我正在使用的测试数据集,我正在保持进度:samples.sql

最佳答案

您的问题可能是之间<​​createdAt 很可能是一个日期时间,因此时间部分会干扰您想要执行的操作。

我强烈建议您使用直接比较。如果您想要两天,那么:

WHERE createdAt >= '2019-07-14' AND
createdAt < '2019-07-16'

如果您只想要 2019-07-14:

WHERE createdAt >= '2019-07-14' AND
createdAt < '2019-07-15'

将其拆分为给定数量的行实际上是不可能的。毕竟,所有时间戳都可能相同,那么如何获得不同的垃圾箱呢?

但是您可以将其分成相同大小的垃圾箱:

SELECT floor( (timestampdiff(second, '2019-07-15', createdat) /
timestampdiff(second, '2019-07-15', '2019-07-17')
) * 48
) as grp,
AVG(`value`) AS `avg`
FROM samples s
WHERE createdAt >= '2019-07-14' AND
createdAt < '2019-07-16'
GROUP BY grp
ORDER BY grp DESC;

关于mysql - 选择时间戳 x 和时间戳 y 之间的数据,返回为 z 行数(缩小结果集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071326/

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