如何更改此代码以正确地创建数据组?
这里是我的代码,它完成了它的工作,但大部分是它不像我告诉它使用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
,并使用你的声明,该数据库将组AceFire6
具有的2
一个kills
值AceFire6
具有的1
一个kills
值的所有值,所有的值,等等,然后选择杀敌数量。
所以在最后,你会得到这样的结果:
AceFire6 3
AceFire6 2
AceFire6 1
Raknath 1
你需要的是总结的杀死了,不管每人有多少人 - 我认为 - 游戏。
对于你的第二个问题(行数)见this答案的另一个问题。
编辑:
好了,这样的事情应该工作(不能保证,我没有测试语句):
SELECT @rn:[email protected]+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 ... :)
尝试这样的:
// first query
SET @ranked = 0;
// second query
SELECT @ranked:[email protected]+1 ranked, name, kills FROM honscores
GROUP BY name, kills
ORDER BY ranked ASC;
而作为@LeChe
Saied如何操作,您可以使用SUM(kills)
在您的字段列表以获得每个名称的总杀伤力。
SELECT @ranked:[email protected]+1 ranked,
name,
SUM(kills) kills FROM honscores, (SELECT @ranked:=0) t2
GROUP BY name
ORDER BY ranked ASC;
我认为在他的代码中,他会在实际的'SELECT'之前遇到'SET'问题 - 我猜他是想要一个语句。 :) – LeChe
我编辑了最后一段代码,所以只有一个sql查询 – Cyclonecode
谢谢,我会试试这个:) – AceFire6
这就像我想要的那样工作:D非常感谢! – AceFire6
没问题,很高兴我可以帮忙... :) – LeChe