获取结果集的不同列的计数

时间:2013-10-08 19:13:41

标签: java

运行查询(DB2)后,结果集有4列。

res1=resultset.getString(Em);  
res2=resultset.getString(Posc);  
res3=resultset.getString(Cal);  
res4=resultset.getString(Ern);

输出如下所示:

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
  • 所有Em都是唯一的
  • Posc可以是任何整数
  • Cal可以是任何整数
  • Ern可以是N或Y

如何编码以获取PoscCalErn的不同值的计数。

例如。如何获得所有1,2等的计数,无论Posc的值是什么。

同样,我如何获得其他列的计数。

2 个答案:

答案 0 :(得分:0)

创建列的值Map<Integer,Integer>作为键,将计数作为值。

对于Posc的每个值,您可以检查地图是否包含值作为键。如果没有添加值为1.如果它增加了计数值

对于Posc示例(我假设您正在循环结果集...)

Map<Integer,Integer> countsOfPoscValues = new HashMap<Integer,Integer>

//Result set loop
{
    //Get values
    Integer posc = //....
    if(countsOfPoscValues.containsKey(posc))
    {
         countsOfPoscValues.put(posc, countsOfPoscValues.get(posc)+1);
    }
    else
         countsOfPoscValues.put(posc, 1);
    //....etc
 }

答案 1 :(得分:0)

你需要这样的东西:

        Map<Integer,Integer> emCount = new HashMap<>();
        Map<Integer,Integer> poscCount = new HashMap<>();
        Map<String,Integer> calCount = new HashMap<>();

        while (resultset.next()) {
            final int em = resultset.getInt(Em);
            final int posc = resultset.getInt(Posc);
            final String cal = resultset.getString(Cal);

            emCount = putKeyValue(emCount,em);
            poscCount = putKeyValue(poscCount ,em);
            calCount = putKeyValue(calCount ,em);
        }

public Map<Object, Integer> putKeyValue(Map<Object, Integer> colCount, Object val) {
    if (colCount.containsKey(val)) {
        colCount.put(val, colCount.get(val).intValue() + 1);
    } else {
        colCount.put(val, 1);
    }

    return colCount;
}