2017-01-03 1 views
0

Привет мой MySQL таблица выглядит следующим образом:Как взять среднее значение, принятое два раза в минуту из MySQL

select 
distinct(TimeStamp) , 
TP_bmp183 as "t:emperature_;_p:reassure" 
from 
gadbdfm 
where 
TimeStamp 
BETWEEN '2016-12-10 08:10%' AND '2016-12-10 08:15%' ; 
    +----------------------------+----------------------------+ 
    | TimeStamp     | t:emperature_;_p:reassure | 
    +----------------------------+----------------------------+ 
    | 2016-12-10 08:10:15.087235 | t: -0.700000;p: 998.470000 | 
    | 2016-12-10 08:10:52.553992 | t: -0.500000;p: 998.460000 | 
    | 2016-12-10 08:11:44.747368 | t: 0.100000;p: 998.520000 | 
    | 2016-12-10 08:12:14.647513 | t: 0.200000;p: 998.450000 | 
    | 2016-12-10 08:12:47.107094 | t: 0.200000;p: 998.410000 | 
    | 2016-12-10 08:13:14.439774 | t: 0.200000;p: 998.430000 | 
    | 2016-12-10 08:13:44.367472 | t: 0.000000;p: 998.440000 | 
    | 2016-12-10 08:14:14.254476 | t: -0.300000;p: 998.550000 | 
    | 2016-12-10 08:14:44.171212 | t: -0.600000;p: 998.420000 | 
    +----------------------------+----------------------------+ 

Итак, как можно видеть, у меня есть, как два значения, принятые два раза в минуту. Мне действительно нужно иметь одно значение за минуту ввода 2016-12-10 08:10, что означает t: -0.600000; p: 998.465000.

  • температура: -0,70000 и -0,500000 это - 0,60000
  • Давление: 998,470000 и 998,460000 является 998,465000
+1

Ваш формат 'TP_bmp183' - это беспорядок. Не можете ли вы использовать 2 обычных столбца? – shmosel

+0

Извините, у меня была опечатка в моем более раннем ответе. См. Его обновленный ниже. (BTW, вы также можете принять мой ответ, чтобы сделать его «окончательным») – leeyuiwah

+0

Distinct не является функцией. Скобки, которые вы использовали в запросе выше, просто игнорируются. 'select different' - операция строки, он рассматривает содержимое всей строки, чтобы решить, уникальна ли каждая строка. –

ответ

1
select 
    date_format(TimeStamp, '%Y-%m-%d %H:%i') timeStampRoundedToMinute 
    , concat(TP_bmp183) as debugPrint 
    , avg(substring_index(substring_index(TP_bmp183, ';', 1), ':', -1)) avgTemp 
    , avg(substring_index(substring_index(TP_bmp183, ';', -1), ':', -1)) avgPressure 
from 
    gadbdfm 
where 
    TimeStamp BETWEEN '2016-12-10 08:10%' AND '2016-12-10 08:15%' 
group by date_format(TimeStamp, '%Y-%m-%d %H:%i'); 
0

Definitive Ответ:

Thnaks @leeyuiwah

select 
    date_format(TimeStamp, '%Y-%m-%d %H:%i') as timeStampRoundedToMinute 
    , concat(TP_bmp183) as "debug use -- t:emperature_;_p:reassure" 
    , avg(substring_index(substring_index(TP_bmp183, ';', 1), ':', -1))as avgTemp 
    , avg(substring_index(substring_index(TP_bmp183, ';', -1), ':', -1))as avgPressure 
from 
    gadbdfm 
where 
    TimeStamp 
BETWEEN '2016-12-10 08:10%' AND '2016-12-10 08:15%' 
group by date_format(TimeStamp, '%Y-%m-%d %H:%i'); 
Смежные вопросы