这是我的代码,它主要完成其工作,但它没有像我告诉它的那样使用 SQL 语句进行分组。另外,我想知道如何制作一个自定义列,该列可以自行编号,以便顶部为“1”,并从那里向下编号。
btnLeaderBoardUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String sql3 ="Select Name, Kills from honscores group by Name, Kills order by Kills DESC";
ResultSet rs;
try {
st = conn.prepareStatement(sql3);
rs = st.executeQuery();
table_2.setModel(DbUtils.resultSetToTableModel(rs));
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
});
这是输出:(我想在当前两列之前添加一列,称为排名,并从 1 开始编号)
Name Kills
Raknath 20
AceFire6 15
AceFire6 12
AceFire6 10
Raknath 9
Q22 7
Q22 5
最佳答案
对于您的第一期,请参阅下文。
简短回答
请改用此语句:
Select Name, sum(Kills) from honscores group by Name order by Kills DESC
长答案
您不想按击杀次数分组,而只想按名称分组,并希望聚合结果。
假设您有以下数据:
AceFire6 2
AceFire6 2
AceFire6 1
AceFire6 3
Raknath 1
Raknath 1
并使用您的语句,数据库会将 kills
值为 2
的 AceFire6
的所有值分组,的所有值>AceFire6
的 kills
值为 1
等,然后选择击杀数量。
所以最后,你会得到这样的结果:
AceFire6 3
AceFire6 2
AceFire6 1
Raknath 1
你想要的是总结击杀数,无论这个人每场比赛有多少人——我猜——。
对于您的第二个问题(行数),请参阅 this另一个问题的回答。
编辑:
好吧,类似这样的东西应该可以工作(不能保证,我没有测试该声明):
SELECT @rn:=@rn+1 AS rank, Name, kills
FROM (
Select Name, sum(Kills) as kills from honscores group by Name order by Kills DESC
) t1, (SELECT @rn:=0) t2;
快乐的 FPS-ing...:)
关于java - 我将如何更改此代码以使数据组正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8201308/