2016-03-22 4 views
0

Я пытаюсь усреднить данные по определенному периоду времени и затем усреднять дату между этими результатами.Как усреднить данные по периодам из таблицы в SQL

Имея данные, как:

value |  datetime 
-------+------------------------ 
    15 | 2015-08-16 01:00:40+02 
    22 | 2015-08-16 01:01:40+02 
    16 | 2015-08-16 01:02:40+02 
    19 | 2015-08-16 01:03:40+02 
    21 | 2015-08-16 01:04:40+02 
    18 | 2015-08-16 01:05:40+02 
    29 | 2015-08-16 01:06:40+02 
    16 | 2015-08-16 01:07:40+02 
    16 | 2015-08-16 01:08:40+02 
    15 | 2015-08-16 01:09:40+02 

Я хотел бы получить что-то вроде в одном запросе:

value |  datetime 
-------+------------------------ 
    18.6 | 2015-08-16 01:03:00+02 
    18.8 | 2015-08-16 01:08:00+02 

, где усредненное значение, соответствующее с первыми 5 начальных значений и даты и времени с середины (или среднее значение) из 5 исходных дат. 5, представляющий интервал n.

Я видел несколько сообщений, которые помещали меня на трек с помощью avg, group by и среднего формата даты в SQL, но я до сих пор не могу точно узнать, что делать.

Я работаю под PostgreSQL 9.4

+1

Не могли бы вы рассказать о том, как вы придумали эти даты и ценности? –

+0

Несомненно, эти данные автоматически вставляются из измерений станции. – AnomalySmith

+0

Нет, результаты, которые вы хотите получить. Почему вы ожидаете увидеть эти два конкретных раза? –

ответ

0

Что-то вроде

SELECT 
    to_timestamp(round(AVG(EXTRACT(epoch from datetime)))) as middleDate, 
    avg(value) AS avgValue 
FROM 
    myTable 
GROUP BY 
    (id)/((SELECT Count(*) FROM myTable)/100); 

заполнены roughtly моих требований, с 100 действующими на усредненной длину интервалов (глобально равно к outputed линий).

0

Вы должны были бы поделиться дополнительной информацией, но вот способ сделать это. Здесь больше информации о нем: HERE

mysql> SELECT AVG(value), AVG(datetime) 
     FROM database.table 
     WHERE datetime > date1 
     AND datetime < date2; 

 Смежные вопросы

  • Нет связанных вопросов^_^