2016-04-29 7 views
0

Мне нужно сделать запрос, который показывает мне ежедневные, полугодовые и месячные средние значения - в MySQL или SQL. Даты указаны в формате Unix, но они также были преобразованы в стандартный формат, как показано ниже.Средние значения вычисления даты

У меня есть следующие таблицы (Fecha Unix - даты Unix, Fecha нормальный - регулярная дата, Номбр - наименование):

Nombre   | fecha unix| fecha normal   |value | 
JOHANNA ANDREA |1273533527 |2010-05-10 19:18:47 |1.2 | 
ANA MARIA  |1273533572 |2010-05-10 19:19:32 |2.0 | 
CARLOS MANUEL |1273542938 |2010-05-10 21:55:38 |2.0 | 
LEONARDO ANGEL |1273543988 |2010-05-10 22:13:08 |1.6 | 
PATRICIO HERNAN |1273546656 |2010-05-10 22:57:36 |1.8 | 
LILIAN CECILIA |1273585499 |2010-05-11 09:44:59 |2.0 | 
ROSA MERCEDES |1273590042 |2010-05-11 11:00:42 |1.8 | 
GABRIEL TORO |1461837600 |2016-04-28 07:00:00 |1.2 | 
FELIPE RUIZ  |1461837680 |2016-04-28 07:01:20 |1.6 | 
CARLOS TAPIA |1461847680 |2016-04-28 09:48:00 |1.8 | 

Ожидаемый результат в течение дня:

fecha  | value 
2010-05-10 | 1.7 
2010-05-11 | 1.9 
2016-04-28 | 1.5 

за месяц :

2010-05 | 1.7 
2010-04 | 1.5 

Благодарим за ответы.

+1

Por пользу, Хага су Pregunta ан [es.stackoverflow.com] (http://es.stackoverflow.com/) о aquí Pero ан inglés. – wchiquito

+0

Вопрос был сделан на испанском языке. –

ответ

1

Вы можете группировать по дате, как так

SELECT DATE(FROM_UNIXTIME('fecha unix')) AS fecha, 
     AVERAGE(*) AS Average 
FROM MyPostsTable 
GROUP BY DATE(FROM_UNIXTIME('fecha unix') 
ORDER BY fecha 

по месяцам, как так

SELECT DATE(FROM_UNIXTIME('fecha unix')) AS fecha, 
      AVERAGE(Value) AS Average 
    FROM MyPostsTable 
    GROUP BY MONTH(FROM_UNIXTIME('fecha unix')) 
    ORDER BY fecha; 

И я думаю, что за неделю, как так

SELECT DATE(FROM_UNIXTIME('fecha unix')) AS fecha, 
       AVERAGE(Value) AS Average 
     FROM MyPostsTable 
     GROUP BY WEEK(FROM_UNIXTIME('fecha unix')) 
     ORDER BY fecha; 
0

Предупреждение - непроверенный, синтаксические ошибки можно , но, надеюсь, вы получите эту идею.

Днем:

select date_format(fecha_normal, '%Y-%m-%d') fecha, avg(Value) from tbl group by 1 

По месяцу:

select date_format(fecha_normal, '%Y-%m') fecha, avg(Value) 
    from tbl group by 1 

По полгода:

select concat(year(fecha_normal), '-', 
    if(month(fetcha_normal) < 7, 1, 2)) fecha, avg(Value) 
    from tbl group by 1 

Идея здесь заключается в том, что мы используем специальное форматирование в сочетании с функцией SQL логики (если) построить строку года-1 за первую половину года, а второй год - второй.

По годам:

select year(fecha_normal) fecha, avg(Value) from tbl group by 1 
Смежные вопросы