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

SQL多列GROUP BY:按builder分组获取对应最重船只的问题

解决每个Builder对应最重船只的查询问题

针对你要获取每个建造商(builder)对应最重船只的需求,给你两种实用的SQL写法:

方法一:窗口函数法(推荐,逻辑清晰)

用ROW_NUMBER()窗口函数给每个建造商的船只按重量降序编号,取编号为1的记录就是该建造商最重的船:

SELECT builder, ship_name, weight
FROM (
    SELECT 
        builder, 
        ship_name, 
        weight,
        -- 按builder分组,组内按weight从大到小排序,生成行号
        ROW_NUMBER() OVER (PARTITION BY builder ORDER BY weight DESC) AS row_num
    FROM 你的表名
) temp
WHERE row_num = 1;

如果同一个建造商有多个重量相同的最重船只,这个方法只会返回其中一艘;如果想返回所有同重量的最重船,把ROW_NUMBER()换成RANK()即可。

方法二:分组关联法

先通过分组查询算出每个建造商的最大重量,再关联原表匹配对应船只:

SELECT t.builder, t.ship_name, t.weight
FROM 你的表名 t
INNER JOIN (
    -- 先查每个builder的最大重量
    SELECT builder, MAX(weight) AS max_weight
    FROM 你的表名
    GROUP BY builder
) max_weights 
ON t.builder = max_weights.builder AND t.weight = max_weights.max_weight;

这个方法会返回所有与该建造商最大重量匹配的船只,适合存在多艘同重量最重船的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:15:46