【问题标题】:Insert ranking into column将排名插入列
【发布时间】:2018-10-16 22:59:22
【问题描述】:

我有一个关注PREFERENCE_SCORE

ID(int) | SCORE(Double) | RANKING(int) |

我想使用以下代码插入数据库

String sql = "INSERT INTO PREFERENCE_SCORE_ ( ID, 
              SCORE,RANK) VALUES (?,?,?) ";
String query ="SELECT ID,FPIS,FNIS FROM db_housekeep";
ResultSet rsp = stats.executeQuery(query);
while(rsp.next()){
    int id = rsp.getInt(1);
    double fpis = rsp.getDouble(2);
    double fnis = rsp.getDouble(3);
    prSt.setInt(1, id);
    prSt.setDouble(2, fnis/(fnis+fpis));
    prSt.setInt(3, THIS PART i dont understand)
    prSt.executeUpdate();
}

我应该添加什么,以便根据SCORE 列自动填充RANKING 列?

【问题讨论】:

  • 这两列之间的数值关系是什么?
  • 您使用的是什么数据库? db_housekeep 中的值是否唯一?
  • 那么,您想每次在插入分数时更新整个排名列以根据分数获得排名吗?
  • 你确定要直接写在表格里吗?也许通过查询获得排名会更好,不是吗?
  • 你是怎么做到的,@ValentinMichalak?

标签: java sql database jdbc derby


【解决方案1】:

我认为这种方法没有好处。它将为排名生成模棱两可的数据。 例如如果我们插入第一行(分数 99),排名将是 1,在它之后,我们插入分数 100 的第二行,排名是多少? (根据运行时计算 rant 应该为 1,但我们已经有 1,所以我们能做什么?)。 所以,它更喜欢使用它只会从表格中选择数据进行显示。

希望您知道语法为 (RANK ( ) OVER ( [ partition_by_clause ] order_by_clause ))

【讨论】:

  • Derby 不支持窗口函数
  • 如果您仍然想要销售工作流程,那么我们有一种解决方法,成本高昂
  • @MDanish 如果表只是idscore 并且我想在jTable 中显示排名,我必须使用select 查询?
  • 检查这个。它可能会有所帮助。stackoverflow.com/questions/35778746/…
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2015-02-02
  • 2018-04-02
  • 2021-05-02
  • 1970-01-01
相关资源
最近更新 更多