gpt4 book ai didi

mysql - 在表中选择每分钟的第一个值

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

我已经尝试解决这个问题一段时间了,也许我的问题是提出正确的搜索查询。我不确定。

无论如何,我遇到的问题是我有一个数据表,每秒添加一个新行(想象结构 {id, timestamp(datetime), value})。我想对 MySQL 进行一次查询以遍历该表并仅输出每分钟的第一个值。

我考虑过使用 LIMIT 和 datetime >=(分钟开始)的多个查询来执行此操作,但考虑到我收集的数据量是很多查询,所以最好在单个中生成数据查询。

示例数据:

id  datetime             value
1 2015-01-01 00:00:00 128
2 2015-01-01 00:00:01 127
3 2015-01-01 00:00:04 129
4 2015-01-01 00:00:05 127
...
67 2015-01-01 00:00:59 112
68 2015-01-01 00:01:12 108
69 2015-01-01 00:01:13 109

我希望结果选择行的地方:

1   2015-01-01 00:00:00  128
68 2015-01-01 00:01:12 108

有什么想法吗?

谢谢!

编辑:忘记添加了,虽然每一秒的数据在每分钟的第一秒并不可靠 - 它可能是 :30 或 :01 而不是 :00 秒后一分钟

编辑 2:可有可无(绝对不需要回答)是一个灵活的查询,也可以花费任意分钟数(而不是每分钟一行)

最佳答案

SELECT t2.* FROM
( SELECT MIN(`datetime`) AS dt
FROM tbl
GROUP BY DATE_FORMAT(`datetime`,'%Y-%m-%d %H:%i')
) t1
JOIN tbl t2 ON t1.dt = t2.`datetime`

SQLFiddle

或者

SELECT * 
FROM tbl
WHERE dt IN ( SELECT MIN(dt) AS dt
FROM tbl
GROUP BY DATE_FORMAT(dt,'%Y-%m-%d %H:%i'))

SQLFiddle

SELECT t1.* 
FROM tbl t1
LEFT JOIN (
SELECT MIN(dt) AS dt
FROM tbl
GROUP BY DATE_FORMAT(dt,'%Y-%m-%d %H:%i')
) t2 ON t1.dt = t2.dt
WHERE t2.dt IS NOT NULL

SQLFiddle

关于mysql - 在表中选择每分钟的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509198/

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