我开始学习java,我的练习练习有问题。
这是整个代码的片段:
import java.io.PrintWriter;import java.sql.ResultSet;import java.sql.SQLException;…
必须涉及聚合函数,并且在查询中显示“无聚合的聚合”时没有任何吸引力
有了这个下面的查询确实是必要的。我使用了sum,因为你的o / p实际上看起来不像计数数据,而是已计数记录的总和
SELECT NAME, SUM(*) FROM TABLE GROUP BY NAME
如果你真的不想在sql中使用聚合,你可以使用 HashMap<String, Integer> 。像这样的东西:
HashMap<String, Integer>
Map<String, Integer> aggResult = new HashMap<>(); while (rs.next()) { String name = rs.getString(NAME_INDEX); //NAME_INDEX - name column index int value = rs.getInt(VALUE_INDEX); //VALUE_INDEX - value column index aggResult.merge(name, value, Integer::sum); //if you dont have java8 use this "if": /* if (aggResult.containsKey(name)) { Integer sum = aggResult.get(name); aggResult.put(name, sum + value); } else { aggResult.put(name, value); } */ } //test output: aggResult.forEach((key, value) -> System.out.println(key + ": " + value));
也许你需要 TreeMap (有或没有比较器)代替 HashMap 对于order,对ResultSet或其他值的值进行空值检查。
TreeMap
HashMap