Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Подскажите оптимальное решение!   Найти похожие ветки 

 
Hro ©   (2002-10-04 23:00) [0]

Доброе время :)
Никак немогу додуматься как реализвать следующий алгоритм.
Есть таблица следующей структуры
subj_id int
param_date datetime
param_n int
param_val numeric

param_n находится в диапозоне 1..24
Скажу сразу что это таблица суточных почасовых графиков субъектов где param_n как раз и есть номер часа (понимаю что странно но так уж получилось). Необходимо проделать следующий update: если (param_val i+1-ого часа > param_val i-ого and param_val i+2-ого часа < param_val i-ого) или (param_val i+1-ого часа < param_val i-ого and param_val i+2-ого часа > param_val i-ого) то param_val i+1-ого и param_val i+2-ого часов = их среднему (param_val i+1-ого + param_val i+2-ого)/2
если уреднение проведено то переходим к i+2 часу если нет то к i+1 и делаем тоже самое.
Это нужно проделать для данных всех субъектов за месяц.

Заранее благодарю всех кто откликнется.


 
oss ©   (2002-10-05 01:12) [1]

ничего себе %)
пиши сразу запрос, ато так ничего не понятно


 
ЮЮ ©   (2002-10-05 11:13) [2]

Честно говоря, алгоритм не страдает однозначностью :-)
Пусть имеем значения:
2 1 3 4 4 4 4 4 ...
Применив алгоритм в 1-й раз, получим:
2 2 2 4 4 4 4 4 ...
Но и на полученном ряде, алгоритм продолжает работать. Применим его ещё раз и получим уже:
2 2 3 3 4 4 4 4 ...
И т.д. Что, по-моему, не есть хорошо. Т.е. в БД ещё прийдется отмечать, что уреднение проведено.

А как делать? Ну уж одни запросом уж точно не получится :-). Или в клиенте, или в хранимой процедуре. Считывать, пересчитывать, перезаписывать.

А лучше избавиться от этого геморроя и при добавлении новой записи сделать это самое усреднение для предыдущего часа и этой записи




 
Hro ©   (2002-10-05 12:39) [3]

>> oss © Если б мог написать запрос то не беспокоил бы людей понапрасну.

>> ЮЮ ©
во-первых в приведенном тобой примере усредняются только 2 и 3 значения т.е. получаем 2 2 2 4 4 4 4 4
т.к. после первого шага i=3 и дальше во всем ряде нет условия что (param_val i+1 > param_val i and param_val i+2 < param_val i)
or (param_val i+1 < param_val i and param_val i+2 > param_val i)

во-вторых от этого геморроя избавиться никак не получится т.к. эти данные уже есть в таблице и их надо обрабатывать.


 
ЮЮ ©   (2002-10-05 12:47) [4]

Я так и написал:
2 2 2 4 4 4 4 4 ...
Но, предположим, что кто-то опять запустил эту же процедуру усреднения на уже усреднённые данные. И вот теперь получим:
2 2 3 3 4 4 4 4 ...
Я писал именно об этом. Что при повторном усреднении уже усреднённых данных алгоритм персчитает эти значения.


 
BlackTiger   (2002-10-05 12:57) [5]

Не знаю каким местом, но чую, что тот "человек", который проводил анализ процессов, был абсолютно некомпетентен и сделал все (алгоритм работы)"по-быстрому, лишь бы работало".



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-92452
orlov
2002-10-18 06:55
2002.10.28
Функция Format


1-92605
I_S_
2002-10-17 12:05
2002.10.28
---|Ветка была без названия|---


1-92437
tytus
2002-10-17 19:32
2002.10.28
совмесное использование RECORD


1-92429
brestmarket
2002-10-17 12:29
2002.10.28
Как избежать неприятного скачка черного цвета при


14-92688
Hooch
2002-10-07 14:16
2002.10.28
Лекции в вузе