我有附加圖像的記錄。最後一列有收到經緯度的日期和時間。現在我想從日期欄的下面數據中選擇每分鐘一條記錄。有沒有任何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鏈接有表頭 –