1

我有一个返回这些值的 MySQL 查询:

+------------+-------+
| transcount | users |
+------------+-------+
|        118 |     2 |
|        240 |     4 |
|        480 |     8 |
+------------+-------+

这是每个用户级别的事务计数。用户字段按升序排列。

我需要生成一份报告,显示随着线性扩展系统中用户数量的增加,我们应该得到的 transcount 的步进增加。例如,在 2 个用户的情况下,我们得到 118 个事务,在一个线性扩展系统中,在 4 个用户的情况下,我们应该得到 236 个事务,(4 / 2 x 118 个事务。)然后在 8 个用户的情况下,我们应该得到 480 个事务(8 / 4 x 240转帐)。

第一行始终是相同的值。最终报告应如下所示:

+------------+-------+-------------------------|
| transcount | users | Count_at_linear_scaling |
+------------+-------+-------------------------|
|        118 |     2 |                     118 |
|        240 |     4 |                     236 |
|        480 |     8 |                     480 |
+------------+-------+-------------------------|

我可以在 SQL 或 Jasper 图表中执行此操作。你推荐哪个?我如何在 MySQL 和 Jasper 中做到这一点?

4

2 回答 2

1

Jasper Support 的 Jim 提供:

嗨,试试这个链接中的方法,它和你需要的非常相似。 http://jasperforge.org/plugins/mwiki/index.php/Jasperserver/Creating_A_Percent_Of_Field 让我知道进展如何。

于 2012-07-02T23:28:59.013 回答
0

我找到了更好的解决方案。我需要为每一行结果数据实现一个降压旅模式。使用两个变量 - 命名为 in 和 out - 我可以将前一行的值存储在变量 out 中,并将新行的值存储在变量 in 中。诀窍是告诉 Jasper 对 in 和“Now”使用“自动”评估时间” 评估时间到了。例如:

<variable name="in" class="java.lang.Long" resetType="None" calculation="System">
    <variableExpression><![CDATA[$V{out}]]></variableExpression>
    <initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
<variable name="out" class="java.lang.Long" resetType="None">
    <variableExpression><![CDATA[$F{Y_VALUE}]]></variableExpression>
    <initialValueExpression><![CDATA[$F{Y_VALUE}]]></initialValueExpression>
</variable>

<detail>
    <band height="35">
        <textField>
            <reportElement x="3" y="0" width="46" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{controllers_users}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="67" y="0" width="58" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{Y_VALUE}]]></textFieldExpression>
        </textField>
        <textField evaluationTime="Auto">
            <reportElement x="148" y="0" width="44" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{in}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="203" y="0" width="44" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{out}]]></textFieldExpression>
        </textField>
    </band>
</detail>

-坦率

于 2012-07-05T06:26:22.767 回答