2016-02-28 8 views
0

У меня есть сервер MySQL с таблицей MyTable, которая имеет следующие столбцы:Средних на колонке, сгруппированные по другой колонке

nid   int(10) unsigned 
temperature float  unsigned 
timestamp  int(10) unsigned 

Эту таблица имеет около 300,000 записей и продолжает расти с каждым днем. Чтобы обрабатывать этот объем данных, я хотел бы найти некоторые SQL-запросы, которые могли бы предоставить мне средние интервалы, такие как «Часовая средняя», «Среднесуточный» и т. Д.

Любые идеи?

+2

'группа by' и дата/время функции приходит на ум. –

+0

Также обратите внимание на разбиение на разделы. – Strawberry

ответ

0

Наконец-то я получил ответ. Я приказываю, чтобы получить среднее ежедневное, я могу использовать:

SELECT DATE(FROM_UNIXTIME(timestamp)) AS Date, 
     AVG(temperature) AS AvgTemp 
FROM `myTable` 
GROUP BY DATE(FROM_UNIXTIME(timestamp)) 

Для того, чтобы получить среднечасовой (на каждый день), я использую:

SELECT DATE(FROM_UNIXTIME(timestamp)) AS Date, 
     HOUR(FROM_UNIXTIME(timestamp)) AS Hour, 
     AVG(temperature) as AvgTemp 
FROM `myTable` 
GROUP BY DATE(FROM_UNIXTIME(timestamp)), 
      HOUR(FROM_UNIXTIME(timestamp))