我在JavaDB之外数据库下面的“COMPANIES_BY_NEWS_REPUTATION”(这是一些随机数据只是代表结构)JavaDB之外:在子查询得到有序记录
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_hashes。声誉和日期绑定到news_hash。
我需要做的是计算每家公司最近5条新闻的平均声誉。为了做到这一点,我以某种方式觉得我需要按照下面的代码所示在子查询中按''和'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。任何人都可以为我的问题建议一个工作解决方案吗
你如何计算平均声誉?它是所有元组中的平均值还是仅仅最后5个值 – kuriouscoder 2011-05-19 21:51:45
只是最后5个值。 – 2011-05-19 21:59:12
让我们假设子查询是可接受的,意味着你只获得该信誉表中的最后5行,这可能意味着公司A有4个数据点,B有1个数据点,C没有(假设这是最后5个) - 那么你的A的平均值(声望)就是4个数据点中的一个,因为B是1,而C是没有的? – 2011-05-20 03:05:03