You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache Derby查询中实现分组连续计数(Running Count)

在Apache Derby中实现分组内连续计数(Running Count)

你需求的是按Part1分组,每组内按Part2排序生成从1开始的连续序号,分组切换时重置计数,在Apache Derby中可以用纯SQL实现,分两种场景:

场景1:Derby版本≥10.12(支持窗口函数)

Derby 10.12及以上版本支持窗口函数,这是最简洁高效的实现方式:

SELECT 
    Part1,
    Part2,
    ROW_NUMBER() OVER (PARTITION BY Part1 ORDER BY Part2) AS Rank
FROM 
    你的表名;
  • PARTITION BY Part1:将数据按Part1分组,每个分组单独计算序号
  • ORDER BY Part2:指定分组内的排序规则,确保序号按Part2顺序生成
  • ROW_NUMBER():为每个分组内的行生成连续的序号,从1开始,分组变化时自动重置

场景2:Derby版本<10.12(不支持窗口函数)

如果使用的是更早的Derby版本,可以通过自连接实现:

SELECT 
    t1.Part1,
    t1.Part2,
    COUNT(t2.Part2) AS Rank
FROM 
    你的表名 t1
JOIN 
    你的表名 t2 ON t1.Part1 = t2.Part1 AND t2.Part2 <= t1.Part2
GROUP BY 
    t1.Part1, t1.Part2
ORDER BY 
    t1.Part1, t1.Part2;

这种方法通过自连接统计同一Part1分组中,Part2小于等于当前行Part2的行数,以此作为序号。注意:如果同一Part1分组内存在重复的Part2值,会导致序号重复,此时需要结合表中其他唯一字段(比如主键)来调整排序条件。

内容的提问来源于stack exchange,提问作者centic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:12