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

如何通过SQL或Excel对含相同字符串的记录按首参考值0.001步长递增编号

结论

该需求更推荐用SQL实现,若仅为临时处理小批量静态数据,Excel公式也可完成,两者的适用场景和实现逻辑如下:


SQL实现优势(优先选择)

  • 原生支持模糊匹配逻辑:不管是用LIKE、CONTAINS还是正则函数,都可以灵活调整Name字段的匹配规则,适配后续可能的规则迭代。
  • 窗口函数天然适配需求逻辑:仅需3步即可完成计算,逻辑清晰可复用,数据量十万级也能稳定高效运行:
    1. 按匹配规则给所有记录打分组标签
    2. 提取每组第一条记录的当前参考值的整数部分作为组基准值
    3. 用ROW_NUMBER()统计组内记录序号,基准值 + (序号-1)*0.001 即为预期参考值

示例SQL(以MySQL为例,可根据实际使用的数据库调整语法):

WITH group_tag AS (
    SELECT 
        *,
        -- 匹配规则可按需调整,示例为按核心名称前缀分组
        CASE 
            WHEN Name LIKE 'First Name%' THEN 'group_1'
            WHEN Name LIKE 'Second Name%' THEN 'group_2'
        END AS tag
    FROM business_data
),
group_base AS (
    SELECT 
        tag,
        FLOOR(MIN(`Current Reference`)) AS base_num -- 取分组最小参考值的整数部分作为基准
    FROM group_tag
    GROUP BY tag
)
SELECT 
    t1.Name,
    t1.`Current Reference`,
    t2.base_num + (ROW_NUMBER() OVER(PARTITION BY t1.tag ORDER BY t1.`Current Reference`)-1)*0.001 AS `DESIRED Reference`
FROM group_tag t1
JOIN group_base t2 ON t1.tag = t2.tag;

Excel实现适用场景

仅适合临时处理1万条以内的静态固定数据:

  • 实现步骤:
    1. 新增辅助列打分组标签:公式为=IF(COUNTIF(A2,"First Name*")>0,"group1",IF(COUNTIF(A2,"Second Name*")>0,"group2",""))
    2. 新增辅助列提取每个分组的基准值,再用COUNTIF统计当前行上方同分组的行数,计算最终预期值
  • 缺点:规则调整需要批量修改所有单元格公式,数据量大易出现计算卡顿、拖动行号导致的公式错误,可复用性极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:36:03