У меня есть таблица и данные, подобные этим:
create table AmountObjects
(
objectId integer,
unixTimestamp integer,
amount integer,
PRIMARY KEY
(
[objectId] ASC,
[unixTimestamp] ASC
)
);
insert into AmountObjects values (1, 1, 33);
insert into AmountObjects values (1, 2, 33);
insert into AmountObjects values (1, 3, 33);
insert into AmountObjects values (1, 4, 33);
insert into AmountObjects values (1, 5, 33);
insert into AmountObjects values (1, 6, 33);
insert into AmountObjects values (1, 7, 33);
insert into AmountObjects values (1, 8, 33);
insert into AmountObjects values (1, 9, 33);
insert into AmountObjects values (1, 10, 33);
Я хочу запросить последние записи, отфильтрованные по дате и кумулятивному количеству, но такие запросы сканируют все записи по объекту:
select
a.objectId,
a.unixTimestamp,
a.amount,
s.total
from AmountObjects a
cross apply
(
select sum(amount) total from AmountObjects stat
where a.unixTimestamp <= stat.unixTimestamp and a.objectId = stat.objectId
) s
where
unixTimestamp >= 9
or s.total <= 150
Мой вопрос: как запросить данные без проверки всех данных по объекту ?
Спасибо