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

如何查询row_num分组下唯一最大event_date的行及非最大日期行

SQL查询需求实现方案

假设你的表名为your_table,以下是针对两个需求的SQL实现:

需求1:查询每个row_num分组中仅存在一条最大event_date的行

该需求需同时满足两个条件:行的event_date是所在row_num分组的最大值,且该最大值在分组内仅出现一次。用窗口函数可快速实现:

SELECT row_num, row_id, event_date
FROM (
    SELECT 
        *,
        -- 标记当前行所在分组的最大event_date
        MAX(event_date) OVER (PARTITION BY row_num) AS max_date,
        -- 统计当前event_date在分组内的出现次数
        COUNT(*) OVER (PARTITION BY row_num, event_date) AS date_count
    FROM your_table
) sub_query
-- 筛选出是最大日期且仅出现一次的行
WHERE event_date = max_date AND date_count = 1;

需求2:查询同row_num分组下不包含最大event_date的行

只需找出分组内event_date不等于该组最大值的所有行,两种实现方式可选:

方式一:窗口函数实现

SELECT row_num, row_id, event_date
FROM (
    SELECT 
        *,
        MAX(event_date) OVER (PARTITION BY row_num) AS max_date
    FROM your_table
) sub_query
WHERE event_date != max_date;

方式二:子查询关联实现

SELECT t.row_num, t.row_id, t.event_date
FROM your_table t
JOIN (
    -- 先获取每个分组的最大event_date
    SELECT row_num, MAX(event_date) AS max_date
    FROM your_table
    GROUP BY row_num
) m ON t.row_num = m.row_num
-- 筛选出日期不等于分组最大值的行
WHERE t.event_date != m.max_date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:22:12