Jaspersoft Studio:按组页脚中的计算值排序 table?

Jaspersoft Studio: Sort table by calculated value in group footer?

我们通过JasperReport 的域层从数据库中获取事件记录。每条记录包含用户和时间值:

userid0 | 00:20:10 | 00:15:00
userid2 | 00:12:00 | 00:17:00
userid0 | 00:05:05 | 00:02:30
userid1 | 00:25:00 | 00:50:00

我们的 table 应列出每个用户的累积值。每条记录的时间简单地汇总在一个变量中。对于上面的示例,结果将是:

userid0 | 00:25:15 | 00:17:30
userid1 | 00:25:00 | 00:50:00
userid2 | 00:12:00 | 00:17:00

此外,应显示结果两个时间值的比率(以百分比表示)。
通过对用户进行分组来进行计算,结果显示在组页脚中(丢弃 "details");所以在这里我们将有三个组页脚:

userid0 | 00:25:15 | 00:17:30 | 144%
userid1 | 00:25:00 | 00:50:00 |  50%
userid2 | 00:12:00 | 00:17:00 |  71%

如何根据第 4 列中的“%”值对 table 进行排序?该值不对应于数据字段,仅包含在组页脚中。但是要求是根据这个值对整个 table 进行排序,例如从 50% 上升到 144%,并将结果限制在前(或后)5 行(即用户)。

当然SQL也能达到要求的结果,但是如上所述,我们使用的是领域层

尽管回答您自己的问题似乎是一种奇怪的方法,但我写这篇文章(至少)是为了记录目的:

经过研究和反复试验,我们决定在这种情况下不使用域层,因为这似乎根本不可行。精心设计的 SQL 语句即可解决问题。

这简化了 table,因为计算和分组是由数据库完成的(从而提高了性能),因此报表的 table 中不需要更多的分组——我们可以使用详细信息部分以普通方式显示查询结果。