微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaDB:在子查询中获取有序记录

如何解决JavaDB:在子查询中获取有序记录

| 我的JavaDB数据库中有以下\“ COMPANIES_BY_NEWS_REPUTATION \”(这是一些随机数据,仅用于表示结构)
      COMPANY         |  NEWS_HASH       | REPUTATION     | DATE
-------------------------------------------------------------------
      Company A       |   14676757       | 0.12345        | 2011-05-19 15:43:28.0                         
      Company B       |   454564556      | 0.78956        | 2011-05-24 18:44:28.0
      Company C       |   454564556      | 0.78956        | 2011-05-24 18:44:28.0
      Company A       |   -7874564       | 0.12345        | 2011-05-19 15:43:28.0 
一个news_hash可能与多个公司有关,而一个公司也可能与多个news_hash有关。信誉和日期绑定到news_hash。 我需要做的是计算每家公司最近5条新闻的平均声誉。为了做到这一点,我以某种方式感到需要在子查询中使用\'order by \'和\'offset \',如下面的代码所示。
select COMPANY,avg(REPUTATION) from 
   (select * from COMPANY_BY_NEWS_REPUTATION order by \"DATE\" desc
   offset 0 rows fetch next 5 row only) as TR group by COMPANY;
但是,JavaDB不允许子查询中的ORDER BY或OFFSET。有人可以为我的问题提出可行的解决方案吗?     

解决方法

您正在使用哪个版本的JavaDB?根据JavaDB文档中的TableSubquery一章,表子查询至少在版本10.6.2.1中支持
order by
fetch next
。 鉴于可以查询子查询并且可以限制结果集的大小,以下(未经测试的)查询可能会满足您的要求:
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
该查询从“ 5”中检索所有不同的公司名称,然后检索每个公司的最后五个信誉行的平均值。我不知道它是否会充分发挥作用,这可能取决于数据集的大小和所拥有的索引。 如果在另一个表中有一个唯一的公司名称列表,则可以使用该列表代替
select distinct ...
子查询来检索要为其计算平均值的公司。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?