table1 -> id, отметка времени, значение
Эта таблица состоит из 10 идентификаторов. Каждый идентификатор будет иметь значение для каждого часа в дне.
Таким образом, за 1 день в этой таблице будет 240 записей.
table2 -> id
Таблица 2 состоит из динамически изменяющегося подмножества идентификатора, присутствующего в таблице 1.
В конкретном случае намерение состоит в том, чтобы получить сумму (значение) из таблицы1, учитывая только идентификаторы в таблице2,
группировка по каждому часу в этот день, присвоение суммированным значениям ранга и повторение этого каждый день.
запрос находится на данном этапе:
select time_stamp, sum(value),
rank() over (partition by trunc(time_stamp) order by sum(value) desc) rn
from table1
where exists (select t2.id from table2 t2 where id=t2.id)
and
time_stamp >= to_date('05/04/2010 00','dd/mm/yyyy hh24') and
time_stamp <= to_date('25/04/2010 23','dd/mm/yyyy hh24')
group by time_stamp
order by time_stamp asc
Если запрос правильный, можно ли сделать это более эффективным, учитывая, что table1 будет состоять из тысяч идентификаторов вместо 10?
РЕДАКТИРОВАТЬ: я использую сумму (значение) 2 раза в запросе, который я не могу найти обходной путь, так что сумма () делается только один раз. Пожалуйста, помогите на этом