Какую версию JavaDB вы используете?Согласно главе TableSubquery в документации JavaDB, подзапросы таблиц поддерживают order by
и fetch next
, по крайней мере, в версии 10.6.2.1.
Учитывая, что подзапросы могут быть упорядочены иразмер набора результатов может быть ограничен, следующий (непроверенный) запрос может сделать то, что вы хотите:
select COMPANY, (select avg(REPUTATION)
from (select REPUTATION
from COMPANY_BY_NEWS_REPUTATION
where COMPANY = TR.COMPANY
order by DATE desc
fetch first 5 rows only))
from (select distinct COMPANY
from COMPANY_BY_NEWS_REPUTATION) as TR
Этот запрос извлекает все отдельные названия компаний из COMPANY_BY_NEWS_REPUTATION
, а затем извлекает среднее значение за последние пятьрепутация рядов для каждой компании.Я понятия не имею, будет ли он работать в достаточной степени, что, вероятно, будет зависеть от размера вашего набора данных и того, какие индексы у вас есть.
Если у вас есть список уникальных названий компаний в другой таблице, вы можетеиспользуйте его вместо подзапроса select distinct ...
, чтобы получить компании, для которых нужно вычислить средние значения.