2 回答

TA貢獻1942條經驗 獲得超3個贊
如果你真的不想在 sql 中使用聚合,你可以使用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對來自 ResultSet 或其他東西的值的順序、空值檢查。

TA貢獻1871條經驗 獲得超8個贊
必須涉及聚合函數,并且查詢“沒有聚合的聚合”沒有任何魅力
有了這個下面的查詢就可以了。我使用 sum 是因為您的 o/p 實際上看起來不像計數數據,而是已計數記錄的總和
SELECT NAME, SUM(*) FROM TABLE GROUP BY NAME
添加回答
舉報