我有附加图像的记录。最后一列有收到经纬度的日期和时间。现在我想从日期栏的下面数据中选择每分钟一条记录。有没有任何MySQL查询来执行操作?MYSQL-每分钟取一条记录
http://i.imgur.com/Z9i4u3x.png
我有附加图像的记录。最后一列有收到经纬度的日期和时间。现在我想从日期栏的下面数据中选择每分钟一条记录。有没有任何MySQL查询来执行操作?MYSQL-每分钟取一条记录
http://i.imgur.com/Z9i4u3x.png
那么你可以做这样的事情:
SELECT col1, col2, col3, colN, MAX(TimeAndDateColumn)
FROM table
GROUP BY DATE(TameAndDateColumn), HOUR(TimeAndDateColumn), Minute(TimeAndDateColumn)
这里是SQL Fiddle.这是一些其他的表,但只是为了看看如何在例如这项工作...
GL!
编辑(与你的列名查询)
SELECT id, latitute, longitude, speed, MAX(`time`)
FROM YourTableName
GROUP BY DATE(`time`), HOUR(`time`), Minute(`time`)
谢谢...其工作完全... –
@SubaragaSundaram不客气。我很高兴我可以帮助:) –
你应该有一个时间列中精度要求。然后,您可以按时间排序[上一结果至上]并在查询中使用limit 1
。
无论如何,你应该有一个轮询机制在每一分钟内触发查询。
你的问题不太清楚,但我相信你正在寻找一个查询,将筛选表最多返回的内容每个“日历分钟”都有一个记录。也就是说,如果多个记录在同一个日历分钟内发生,您只能获得其中的一个。
尝试这样:
SELECT DATE_FORMAT(time_stamp, '%Y-%m-%d %H:%i:00') time_stamp,
AVG(lat) lat, AVG(lon) lon
FROM table
GROUP BY DATE_FORMAT(time_stamp, '%Y-%m-%d %H:%i:00')
这将让你在那一分钟的平均仓位计算。诀窍是DATE_FORMAT(time_stamp, '%Y-%m-%d %H:%i:00')
将time_stamp
值截断为前一个日历分钟,GROUP BY
将它们聚合。
您可以在每分钟内得到第一个或最后一个测量结果,但这很难。如果您的id
值总是随着time_stamp
的增加而上升,则可以使此效率更高。该查询将获取每个日历分钟中的第一个观测值。
SELECT a.lat, a.lon, a.time_stamp
FROM table a
JOIN (
SELECT MIN(id) id
FROM table
GROUP BY DATE_FORMAT(time_stamp, '%Y-%m-%d %H:%i:00')
) b ON a.id = b.id
内部查询获取的每个日历分钟最早观察id
,并且JOIN取出与这些ID值相关联的详细记录。如果您需要最新观察结果,请改用MAX(id)
。
注意。我是纯粹主义者GROUP BY
。我不喜欢nondeterministic behavior of the MySQL extension to GROUP BY
。
SELECT AVG(long), AVG(lat), timestamp
FROM table
GROUP BY round(UNIX_TIMESTAMP(timestamp)/60)
表结构&你试过的东西。请问 – Akhil
哪里可以找到表头? –
这个img链接有表头 –