C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Хранимая процедура  (Прочитано 1283 раз)
SilverFish
Участник
**

Сказали спасибо: +14/-6
Offline Offline

Сообщений: 789


« : 12 октября 2015, 13:49:24 »

Помогите написать хранимую процедуру для PostgreSQL.
Процедура принимает параметры – ширину графика в пикселях, начало времени, конец времени, параметр по умолчанию равный к примеру 10, id устройства.
Строим график параметров температуры/давления/влажности по времени из таблицы sensdatas.
Код
-- вернуть усредненные данные по столбцам температуры/давления/влажности таблицы sensdatas за период времени 
CREATE TABLE sensdatas
(
 idserial serial NOT NULL,
 id INTEGER NOT NULL,-- id устройства
 temperature DOUBLE PRECISION,--температура
 pressure DOUBLE PRECISION,--давление
 humidity DOUBLE PRECISION,--влажность
 sernum INTEGER NOT NULL,
 curenttime TIMESTAMP WITHOUT TIME zone NOT NULL,
 et INTEGER,
 ep INTEGER,
 eh INTEGER,
 iroom CHARACTER VARYING(64),
 CONSTRAINT sensdataskey PRIMARY KEY (idserial)
)
 
SELECT * FROM sensdatas
WHERE id=:idsensor
AND curenttime >= :START AND curenttime <= :END
ORDER BY curenttime;

Допустим для начала для температуры:
Чтобы понять идею, оперирую, к примеру, круглыми числами - допустим при выборке от начала времени до конца времени есть 1000 показаний в базе.
К примеру, ширина графика в пикселях также 1000.
Делим эту 1000 на параметр по умолчанию 10 и получаем 10 участков для графика. На каждом участке у нас получается 100 показаний. Получить среднее значение по температуре и времени для каждого участка и вернуть точку. Таким образом, пользователю должно вернуться для построения графика всего 10 усредненных точек (участков 10 и в каждом участке по одной усредненной точке).
Подскажите, пожалуйста, скелет такой процедуры.
Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: