Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2012, 21:37   #1
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию среднее значение за каждый час

Здравствуйте, форумчане. У меня есть грид. В нем есть поле дата/время. Хранится дата, пробел время, оба в полном формате. И далее куча полей с разными числовыми параметрами. База на Access, ADO. Запись в базу осуществляется каждую минуту. Как мне посчитать среднее значение за каждый час. Причем время может быть в течении одной даты(дневная смена), либо разные даты(ночная смена). Помогите плиззз. Очень нужно, уже ума не приложу. Хотя бы идею. Да, кстати, все это нужно сделать без использования sql.Заранее, благодарен.
jawist вне форума Ответить с цитированием
Старый 14.10.2012, 21:47   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ну, например, как-то так:
Код:
sum:=0;
// если поля в формате "дата время" - фильтрируем таблицу по указаному диапазону
  for i:=0 to 59 do // т.к. запись делается каждую минуту - за час у нас = 60 записей
  begin
    Table1.RecNo:=i;
    sum:=sum+Table1.FieldByName('val').value; // суммируем эти 60 записей
  end;
  sred:=sum/60; // получаем среднее значение
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.10.2012, 22:05   #3
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

Это конечно так. Но вот проблема может быть вот в чем. База пишется автоматически при запуске программы. Время она берет системное и запуск может быть в любое время. Например запуск может быть в 8:30, а нужно посчитать среднее с 8 до 9, то так не получиться.
jawist вне форума Ответить с цитированием
Старый 14.10.2012, 22:33   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

тогда
Код:
Table1.First;
while not Table1.Eof
  do
  begin
    sum:=sum+Table1.FieldByName('val').value; 
    Table1.Next;
  end;
sred:=sum/Table1.RecordCount;
такой цыкл будет независим от кол-ва записей в нем ... хоть 2 хоть 59 их там будет
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.10.2012, 22:46   #5
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

Вы немного не поняли. Мне нужно посчитать значения например с 8 до 9, с 9 до 10, с 10 до 11. А по вашему он считает среднее по всему столбцу.Т.е сначала я задаю промежуток по дате времени,данные фильтруются,в этом промежутке считаю за каждый час средние значения. Например: Выбираю с 8:00 до 11:00. А средних значений будет 3, с 8 до 9, с 9 до 10, с 10 до 11. Вот как-то так нужно.
jawist вне форума Ответить с цитированием
Старый 14.10.2012, 22:55   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну и что мешает время анализировать, надеюсь есть оно в одном из полей? Считаете для нескольких часов - динамический массив для сумм создайте соответствующей размерности и для каждого часа сумму накапливайте по соответствующему ему индексу массива
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.10.2012, 04:45   #7
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

А можно примерчик?

Последний раз редактировалось jawist; 15.10.2012 в 04:54.
jawist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нажатие на ссылку каждый час EGORXX87 Помощь студентам 4 28.07.2012 14:51
Каждый час рандомно прибавлять к числу и выводить на экран vnaumenko JavaScript, Ajax 1 16.07.2012 21:16
Перевод времени в часы и суммирование выручки за каждый час m4dd0g Microsoft Office Excel 3 08.04.2011 23:47
Воспроизводить сигнал каждый час Konstantin1706 Общие вопросы Delphi 6 14.05.2009 09:08
Помогите Каждый час вылазиет окно DOS файл smd.exe не может найти папка c:\Documents and Settings\Network Carlson25 Windows 5 30.03.2009 21:27