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

如何按colC分组获取对应colA最大值的colB数值

解决方案

不用GROUP BY也能搞定这个需求,给你两种常用方法:

方法一:窗口函数(推荐,简洁高效)

用ROW_NUMBER()窗口函数给每组数据排序,直接筛选出目标行:

WITH ranked_data AS (
    SELECT 
        colA,
        colB,
        colC,
        -- 按colC分组,组内按colA从大到小排,给每行加序号
        ROW_NUMBER() OVER (PARTITION BY colC ORDER BY colA DESC) AS rn
    FROM your_table_name
)
-- 取每个组里序号为1的行,就是colA最大的那一行
SELECT colC, colA, colB
FROM ranked_data
WHERE rn = 1;

如果同一colC下有多个行的colA是并列最大值,想要把这些行都返回,就把ROW_NUMBER()换成RANK()或者DENSE_RANK()就行。

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

先通过子查询拿到每个colC对应的最大colA,再关联原表找出对应的colB:

SELECT t1.colC, t1.colA, t1.colB
FROM your_table_name t1
INNER JOIN (
    -- 先按colC分组,拿到每组的最大colA
    SELECT colC, MAX(colA) AS max_colA
    FROM your_table_name
    GROUP BY colC
) t2 ON t1.colC = t2.colC AND t1.colA = t2.max_colA;

内容的提问来源于stack exchange,提问作者k.dkhk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:58:16