Помогите написать хранимую процедуру для 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 и в каждом участке по одной усредненной точке).
Подскажите, пожалуйста, скелет такой процедуры.
Спасибо.