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

Java 获取结果集不同列的计数,java,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 输出如下

运行查询(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  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
  • 所有
    Em
    都是唯一的
  • Posc
    可以是任何整数
  • Cal
    可以是任何整数
  • Ern
    可以是N或Y
如何进行编码以获得
Posc
Cal
Ern
的不同值的计数

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
例如我如何获得所有1、2等的计数,无论是
Posc
的值

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
类似地,如何获得其他列的计数

创建列值的
映射作为键,计数作为值

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
对于
Posc
的每个值,您将检查映射是否包含作为键的值。如果不是,则将其值添加为1。如果它确实增加了计数值

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
对于
Posc
示例(我假设您正在循环结果集…)

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
Map countsOfPoscValues=新HashMap
//结果集循环
{
//获取价值
整数posc=/。。。。
if(PoscValue.containsKey(posc))计数
{
countsOfPoscValues.put(posc,countsOfPoscValues.get(posc)+1);
}
其他的
posc值的计数。put(posc,1);
//……等等
}

您需要这样的东西:

Em     Posc   Cal Ern  
305      1     2   N  
306      1     2   N  
307      2     3   Y     
        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;
}
Map emCount=new HashMap();
Map poscCount=new HashMap();
Map calCount=new HashMap();
while(resultset.next()){
final int em=resultset.getInt(em);
final int posc=resultset.getInt(posc);
最终字符串cal=resultset.getString(cal);
emCount=putKeyValue(emCount,em);
poscCount=putKeyValue(poscCount,em);
calCount=putKeyValue(calCount,em);
}
公共映射putKeyValue(映射列计数、对象值){
if(colCount.containsKey(val)){
colCount.put(val,colCount.get(val).intValue()+1);
}否则{
colCount.put(val,1);
}
返回colCount;
}

您想要更改Java代码还是想要返回该信息的SQL查询?我有SQL查询。我想要可以获取结果的java代码您需要列或行中所有元素的总和计数吗?或者列数?我需要每个列中不同元素的计数。好的。那么请看一下我的答案。