2012-06-12 1 views
1

У вас есть таблица, которая записывает метку времени и целочисленное чтение (с учетом даты, чтение) с электрического счетчика (kwh). Хотелось бы графа ежедневного использования ... большинство чтений ежедневно, некоторые - несколько дней друг от друга - случайные времена дня. Хотите среднесуточную разницу в предыдущей записи, возвращенную за каждый день. * Обратите внимание, что средние значения неточно.MySQL показывает среднее значение в день случайно записанного целого числа

Example Data: 
date_entered reading 
2012-06-01 17:02 18522 
2012-06-02 14:56 18641 
2012-06-03 10:55 18677 
2012-06-06 15:16 18702 
2012-06-11 13:28 18803 
2012-06-13 17:33 18850 

Example Output: 
Date    Daily Average 
2012-06-01 12:00  
2012-06-02 12:00 19 
2012-06-03 12:00 130 
2012-06-04 12:00 43 
2012-06-05 12:00 43 
2012-06-06 12:00 43 
2012-06-07 12:00 8 
2012-06-08 12:00 8 
2012-06-09 12:00 8 
2012-06-10 12:00 8 
2012-06-11 12:00 21 
2012-06-12 12:00 21 
2012-06-13 12:00 22 
+0

У вас есть возможность создать таблицу всех дат, а затем присоединиться к ней? Если это так, вы можете легко заполнить пробелы, такие как разрыв между 06-03 и 06-06, а затем создать функцию, которая распределяет нулевые значения снизу вверх. – philwinkle

+0

Да, я мог бы это сделать ... просто думал, что это может быть более чистый способ, о котором я не думал. – Edward

ответ

2

Вы можете выполнить шаги, предпринятые вами для расчета средних значений вручную. Вот его явное объяснение:

У вас есть список чтения, которые хранятся два элемента информации:

  • Timestamp
  • Kwh агрегат

И вы хотите получить список ежедневных потреблений с :

  • Дата
  • кВт.ч Расход

Вы должны перебрать первого списка и заполнить второй список:

Для каждого чтения (начиная со второго дня ваших записей):

  • Получить последний пункт в Чтениях, которые имеют предыдущую дату.
  • Сравните даты и получите разницу в днях (должно быть> = 1)
  • Для каждого дня со дня, следующего за последним чтением, и до текущей даты чтения создайте одну запись в ежедневном потреблении (если только они не являются уже создано, потому что у вас есть два показания в ту же дату)
  • Получите разницу в потребностях.
  • Разделите разницу в потреблении на разницу в днях, чтобы получить среднее значение.
  • Присвойте этому среднему значение потребления Kwh каждого ежедневного потребления со дня, следующего за последним показанием, до текущей даты чтения.

Voilà!

Он должен работать, даже если у вас более одного чтения в одну и ту же дату, так как он просто перезаписывает среднее значение, когда вы переходите ко второму чтению того же дня (просто убедитесь, что вы создали только один элемент ежедневного потребления за день).

+0

Спасибо за совет ... Это, наверное, то, что я буду делать. – Edward

+0

Добро пожаловать. Этого должно быть достаточно. Я боялся, что вы захотите принять во внимание время чтения, которое заставило бы вас разделить дни в разных временных рамках до и после чтения, перекрещивать временные интервалы и потребление ... и сделать его более сложным для очень маленького повысить точность. – Dil

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

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