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

如何按ID提取对应最大VALUE的SQL语句及Excel实现方法

解决重复ID取最大VALUE的SQL及Excel方案

SQL实现方法

方法一:窗口函数(推荐,适配主流数据库)

适用于MySQL 8.0+、SQL Server、PostgreSQL等支持窗口函数的数据库,能精准取到每个ID对应最大VALUE的唯一行:

WITH ranked_data AS (
    SELECT 
        ID, 
        VALUE,
        -- 把需要保留的其他字段也加在这里
        ROW_NUMBER() OVER (PARTITION BY ID ORDER BY VALUE DESC) AS rn
    FROM your_extracted_dataset
)
SELECT ID, VALUE -- 同步保留其他字段
FROM ranked_data
WHERE rn = 1;

如果同一个ID存在多行VALUE同为最大值的情况,ROW_NUMBER()会随机返回其中一行;若要保留所有最大值行,把ROW_NUMBER()换成RANK()或DENSE_RANK()即可。

方法二:子查询关联(兼容旧版本数据库)

针对不支持窗口函数的老版本数据库,先提取每个ID的最大VALUE,再关联原数据集匹配对应行:

SELECT t1.ID, t1.VALUE -- 按需添加其他字段
FROM your_extracted_dataset t1
INNER JOIN (
    SELECT ID, MAX(VALUE) AS max_val
    FROM your_extracted_dataset
    GROUP BY ID
) t2 ON t1.ID = t2.ID AND t1.VALUE = t2.max_val;

注:若同一ID有多行VALUE等于最大值,该语句会返回所有这些行;如需唯一行,可结合DISTINCT或额外条件筛选(比如取其他字段的极值)。

Excel处理方案

方法一:数据透视表(快速高效)

  1. 选中数据集区域,点击「插入」→「数据透视表」,按向导完成创建。
  2. 在字段列表中,将「ID」拖至「行」区域,「VALUE」拖至「值」区域;点击值区域的「VALUE」,选择「值字段设置」,将计算类型改为「最大值」。
  3. 若需保留其他字段,可将其拖至「值」区域,按需设置为「最大值」或「最小值」(确保匹配最大VALUE对应的行数据)。

方法二:函数组合(精准匹配单一行)

假设ID在A列、VALUE在B列,步骤如下:

  1. 在C列输入公式 =MAXIFS(B:B,A:A,A2),下拉填充,得到每个ID对应的最大VALUE。
  2. 在D2输入数组公式 =INDEX(A:A,MATCH(1,(A:A=A2)*(B:B=C2),0)),按Ctrl+Shift+Enter确认(Excel 365直接回车),下拉获取对应ID;同理可复制公式修改列号,获取其他字段数据。
  3. 选中结果区域,复制后粘贴为值,再点击「数据」→「删除重复值」,以「ID」为依据删除重复项,最终得到每个ID对应最大VALUE的唯一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:21:06