Нет синтаксиса RQL
, который позволял бы вычислять среднее значение для элементов в запросе.Таким образом, у вас есть два варианта.Вы можете выполнить свой текущий оператор:
album_id= ? 0
, а затем выполнить цикл по полученному RepositoryItem[]
и самостоятельно рассчитать среднее значение (это может занять много времени на больших наборах данных и означает, что вам придется загрузить всерезультаты в память, так что, возможно, не лучшее решение) или вы можете реализовать SqlPassthroughQuery
, который вы выполняете.
Object params[] = new Object[1];
params[0] = albumId;
Builder builder = (Builder)view.getQueryBuilder();
String str = "select avg(rating) from rating WHERE album_id = 1 group by album_id";
RepositoryItem[] items =
view.executeQuery (builder.createSqlPassthroughQuery(str, params));
Это выполнит вычисление среднего значения в базе данных (что-то, что это довольно хорошо делает)и экономит ваши циклы ЦП и память в приложении.
Тем не менее, не используйте привычку SqlPassthroughQuery
, поскольку это означает, что вы не сможете использовать кеш репозитория так часто, что может быть вреднок вашей заявке.