如何将总价值转化为双精度或向量

How to get total value into a double or a vector

我想将特定帐号的所有 "Amount" 总值转换为双精度或向量。由于我的数据库有许多相同帐号的交易,我无法弄清楚如何获得所有 records.My 代码的总价值给我最后的交易金额值而不是所有的总和。感谢任何帮助

 ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
        while (rs5.next()) {
            Vector <Double> em = new Vector();
            em.add(rs5.getDouble("Amount"));

            Double [] myArray = em.toArray(new Double[0]);
            check2 = myArray[0];


        }

如果您只想要所有金额的总和,而不关心单个金额,您可以直接通过执行 SQL 查询来获取它:

SELECT SUM(Amount) FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'"

如果您要获取给定帐户的单个金额并自行计算总和,您可以遍历 myArray 数组或 em 向量并添加所有金额。如果您选择这种方法,请将 em 的初始化移到循环之外。

while 循环的每次迭代,都会重置 Vector<Double> em。这意味着只有最近的元素才真正结束在你的循环中。通过将 Vector 的声明移到循环外来解决此问题

Vector <Double> em = new Vector();
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
    while (rs5.next()) {       
         em.add(rs5.getDouble("Amount"));
    }
Double [] myArray = new Double[em.size()]; 
myArray = em.ToArray(myArray);
//Now do stuff with all the entries

如果您只对总和感兴趣,您可以像 Eran 建议的那样将总和移到查询本身,或者在循环外声明一个总和变量并在每个循环中更新它,如下所示:

Double runningSum = 0.0;
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM  Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%'");
    while (rs5.next()) {
        runningSum += rs5.getDouble("Amount");
    }

下面的查询将return帐号和相应的金额

Select accountnumber,sum(amount) from Incoming_Transactions WHERE  AccountNumber LIKE '" + accountnum+  "%' group by accountnumber

此外,如果您不想修改查询,您可以使用 map,其中 accountnumer 是键,value 是金额。如果您在地图中已有帐号,请将金额添加到当前金额值中,否则将新帐户添加到地图中