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

如何在行存在重复时按variant首字母分组选取count值最大的多行数据

需求核心梳理
  • 按「ID + variant首字母」为分组维度,筛选每个分组内count值最高的记录
  • 最终返回结果保留完整的2位variant编码,不可仅返回首字母
  • count值并列时可任选一条,也可全部返回
实现方案

通用SQL解法(支持PostgreSQL/MySQL 8.0+/Oracle等支持窗口函数的数据库)

使用窗口函数标记每个分组内的记录排序优先级,筛选排序第一的记录即可:

SELECT ID, Variant, Count
FROM (
    SELECT 
        ID,
        Variant,
        Count,
        -- 按ID+variant首字母分组,count倒序排序
        ROW_NUMBER() OVER (
            PARTITION BY ID, SUBSTR(Variant, 1, 1) 
            ORDER BY Count DESC
        ) AS rn
        -- 如果需要保留所有count并列的记录,把上面的ROW_NUMBER换成RANK()即可
    FROM 你的表名
) t
WHERE rn = 1;

结果说明

执行上述查询后,针对你提供的示例数据返回结果如下:

1, a2
1, b1
2, a1
2, b1 -- 若用ROW_NUMBER只返回其中一条并列项,用RANK会同时返回b1和b2
低版本数据库适配方案

如果你的数据库不支持窗口函数(比如MySQL 5.x及更早版本),可以用关联子查询实现:

SELECT t1.ID, t1.Variant, t1.Count
FROM 你的表名 t1
INNER JOIN (
    SELECT ID, SUBSTR(Variant,1,1) AS first_char, MAX(Count) AS max_count
    FROM 你的表名
    GROUP BY ID, SUBSTR(Variant,1,1)
) t2 ON t1.ID = t2.ID 
    AND SUBSTR(t1.Variant,1,1) = t2.first_char 
    AND t1.Count = t2.max_count;

该版本默认返回所有count并列的记录,如需去重可额外增加过滤逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:00:00