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

如何在不同分组中获取每个rank对应的最后一行数据

提取每个rank对应的最后一行数据

原始数据表

idtypestart daterank
111151/1/221
111151/3/221
111152/04/221
111231/02/222
111231/3/222
1112516/03/223

需求说明

现有数据表中,同一id对应不同type,每个type对应相同的rank,rank按start date排序。需要提取每个rank中start date最晚的记录,即每个rank对应的最后一行数据。

预期结果

idtypestart daterank
111152/04/221
111231/3/222
1112516/03/223

解决方案

方案1:使用窗口函数(适用于MySQL 8+、PostgreSQL、SQL Server等)

利用ROW_NUMBER()窗口函数按rank分组,每组内按日期倒序排序后取第一条记录:

SELECT id, type, `start date`, rank
FROM (
    SELECT 
        id, type, `start date`, rank,
        ROW_NUMBER() OVER (PARTITION BY rank ORDER BY `start date` DESC) AS rn
    FROM your_table
) t
WHERE rn = 1;

方案2:分组关联(兼容低版本SQL)

先按rank分组获取每个组的最大日期,再关联原表匹配对应记录:

SELECT t1.id, t1.type, t1.`start date`, t1.rank
FROM your_table t1
INNER JOIN (
    SELECT rank, MAX(`start date`) AS max_date
    FROM your_table
    GROUP BY rank
) t2 
ON t1.rank = t2.rank AND t1.`start date` = t2.max_date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:30:44