Выборка временных рядов SQL - PullRequest
       0

Выборка временных рядов SQL

3 голосов
/ 07 сентября 2011

У меня есть временные ряды datetime, в mySQL хранятся двойные столбцы, и я хотел бы выбирать временные ряды каждую минуту (т.е. извлекать последнее значение с интервалом в одну минуту).Есть ли эффективный способ сделать это в одном операторе выбора?

Способ грубой силы будет включать либо выбор всей серии и выборку на стороне клиента, либо отправку одного выбора для каждой точки (например, select * from data where timestamp<xxxxxxxxx order by timestamp desc limit 1).

Ответы [ 2 ]

5 голосов
/ 08 сентября 2011

Вы можете преобразовать свои метки времени в метки времени UNIX, сгруппировать по unix_timestamp DIV 60 и извлечь максимальные метки времени из каждой группы.После этого присоедините полученный список к исходной таблице, чтобы получить данные для полученных временных отметок.

В принципе это может выглядеть примерно так:

SELECT
  t.*  /* you might want to be more specific here */
FROM atable t
  INNER JOIN (
    SELECT
      MAX(timestamp) AS timestamp
    FROM atable
    GROUP BY UNIX_TIMESTAMP(timestamp) DIV 60
  ) m ON t.timestamp = m.timestamp
4 голосов
/ 07 сентября 2011

Вы можете использовать DATE_FORMAT, чтобы получить только те части даты и времени, которые вам нужны. Вы хотите уменьшить дату и время до минуты, а затем для каждой группы с этим «округленным» временем получить строку с максимальным временем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...