В вашем запросе отсутствует предложение GROUP BY
. В большинстве баз данных он даже не запускается, но MySQL разрешает (в определенных режимах), и в результате вы получаете одну запись со средним уровнем таблицы и некоторым значением atr_name
из определенной записи.
Но вы также можете использовать карту для хранения ключей atr_name
и их средних значений.
Map<String, Double> sc = new HashMap<>();
String sql = "SELECT atr_name, AVG(newScore) AS avgScore FROM scores GROUP BY atr_name";
rs = statement.executeQuery(sql);
while (rs.next()) {
sc.put(rs.getString("atr_name"), rs.getDouble("avgScore"));
}
sc.forEach((k, v) -> System.out.println("atr_name: " + k + ", average score: " + v));
Обратите внимание, что я звоню ResultSet#getDouble
, чтобы получить среднее значение столбца newScore
. Даже если столбец newScore
является целым числом, взятие среднего значения должно возвращать число с плавающей точкой (я думаю).