我需要计算sql中的平均值。有多个条目具有相同的atr\ U名称,但分数不同。需要计算每个atr\U名称得分的平均值,并在数据库表中更新它。我正试图把数据放到一个数组列表中。但我没有得到正确的结果。只是给了我一个平均值错误的名字。
ArrayList<String> sc = new ArrayList<String>();
resultSet = statement.executeQuery("select atr_name, avg(newScore) from scores");
while (resultSet.next()) {
sc.add(resultSet.getString("atr_name"));
sc.add(resultSet.getString("avg(newScore)"));
}
for (String a : sc) {
System.out.println(" " + a);
}
3条答案
按热度按时间emeijp431#
您的查询缺少
GROUP BY
条款。在大多数数据库中,它甚至不会运行,但mysql允许in(在某些模式下),因此您将得到一条表级平均值的记录,以及一些atr_name
某个记录的值。但是,您可能还需要使用Map来存储
atr_name
他们的平均分数。注意,我正在打电话
ResultSet#getDouble
求平均值newScore
列。即使newScore
列是整数,取平均值应该返回一个浮点(我认为)。dddzy1tm2#
下次如果你问一个数据库问题,请添加数据库的名称和数据库的版本。sql在不同的数据库上是不同的。
在您的语句中缺少一个GROUPBY子句。
尝试按atr\ U名称从分数组中选择atr\ U名称,avg(新闻核心)
yyyllmsg3#
您的代码应该如下所示: