Помогите составить SQL запрос
Вообще говоря ответ на этот вопрос не однозначен.
Можно интегрировать ступенчатый график, можно кусочно-линейный, а можно вообще многочлен n степени (n - количество точек-1)
select
sumDateTime - lag(DateTime,1,:start_date) over (order by DateTime * Value)
from table
where DateTime>=:start_date and DateTime<=:end_date
18:42:32 select sumDateTime - lag(DateTime,1,'5-ДЕК-2007 00:00:00') over (order by DateTime * Value) from TAG_000205 where DateTime>='5-ДЕК-2007 00:00:00' and DateTime<='6-ДЕК-2007 00:00:00'
18:42:32 *
18:42:32 ORA-30483: функции окна в данном месте запрещены
18:42:32 *** Script stopped due to error ***
18:42:32 *** SCRIPT END : Session:ARORCL(1) 5-дек-2007 18:42:32 ***
18:42:32 End SQL Editor Execution
select sum(Value) from (
select (DateTime - lag(DateTime,1,:start_date) over (order by DateTime * Value as Value
from table where DateTime>=:start_date and DateTime<=:end_date
)
select sum(value) from (SELECT EXTRACT(HOUR FROM (DateTime - lag(DateTime,1,'5-ДЕК-2007 00:00:00') over (order by DateTime*3600 +
EXTRACT(MINUTE FROM (DateTime - lag(DateTime,1,'5-ДЕК-2007 00:00:00') over (order by DateTime*60 +
EXTRACT(SECOND FROM (DateTime - lag(DateTime,1,'5-ДЕК-2007 00:00:00') over (order by DateTime*value as value
from TAG_000205
where DateTime>='5-ДЕК-2007 00:00:00' and DateTime<='6-ДЕК-2007 00:00:00')
Проблема была в том, что надо было както отконвертить тип данных INTERVAL в NUMBER
Оставить комментарий
Gasparfx
Есть таблица с 2 полями: DateTime, ValueВ таблицу в определённые промежутки времени (неравномерные) записывается инфа со счётчика электроэнергии.
В поле DateTime хранится дата и время, в Value значения мгновенной мощности в кВт.
Нужно проинтегрировать данные таблицы за сутки по времени, т.е. подсчитать потреблённую мощность в кВт*час за сутки.
Можно ли это сделать как нибуть ОДНИМ SQL запросом, который сразу бы возвращал значение интеграла или придётся делать выборку всего архива за сутки и по циклу его интегрировать в делающей запрос программе. Проблема второго варианта в необходимости получения большого объёма данных при выборке архива за сутки.
Интегрирование простейшее, методом прямоугольников.
БД Oracle, создать хранимую процедуру на сервере нет возможности.