首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RQLQuery是怎么写的?

RQLQuery是怎么写的?
EN

Stack Overflow用户
提问于 2018-11-20 09:39:44
回答 1查看 190关注 0票数 0

我是ATG的新手,我有个问题。如何编写提供数据的RQLQuery,例如这个SQL查询?

代码语言:javascript
复制
select avg(rating) from rating WHERE album_id = ?;

我试着这样做:

代码语言:javascript
复制
RqlStatement statement;
    Object rqlparam[] = new Object[1];
    rqlparam[0] = album_Id;
    statement= RqlStatement.parseRqlStatement("album_id= ? 0");
    MutableRepository repository = (MutableRepository) getrMember();
    RepositoryView albumView = repository.getView(ALBUM);

这个查询为特定的album_id返回一个项,如何改进我的RQL查询,以便它向我返回平均字段值,就像上面的SQL一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-21 10:34:09

没有允许计算查询中项的平均值的RQL语法。因此,您有两个选择。您可以执行当前语句:

代码语言:javascript
复制
album_id= ? 0

然后循环遍历生成的RepositoryItem[]并自己计算平均值(这在大型数据集上可能很费时,意味着您必须将所有结果加载到内存中,所以可能不是最佳解决方案),或者您可以实现执行的SqlPassthroughQuery

代码语言:javascript
复制
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));

这将在数据库上执行平均计算(它非常擅长这样做),并在应用程序中节省CPU周期和内存。

尽管如此,不要养成使用SqlPassthroughQuery的习惯,因为这意味着您没有那么多地使用存储库缓存,这可能对您的应用程序有害。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53390081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档