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

在Databricks编写SQL查询:获取(A,B)对最近3条时间戳的C列最大值

Databricks SQL 查询:分组取最近3条记录中C列的最大值

可以通过窗口函数+分组聚合实现需求,以下是具体的SQL语句:

WITH ranked_records AS (
    SELECT
        A,
        B,
        C,
        -- 按(A,B)分组,时间戳倒序排名,最近的记录排第1
        ROW_NUMBER() OVER (PARTITION BY A, B ORDER BY timestamp_col DESC) AS record_rank
    FROM your_table -- 替换为你的实际表名
)
SELECT
    A,
    B,
    MAX(C) AS max_recent_c
FROM ranked_records
-- 筛选每组最近的3条记录
WHERE record_rank <= 3
GROUP BY A, B;

逻辑说明:

  1. 窗口函数排名:用ROW_NUMBER()给每个(A,B)分组内的记录按时间戳降序编号,最近的记录排名为1,次近为2,以此类推。
  2. 筛选最近3条:通过WHERE record_rank <=3保留每组的前3条最新记录。
  3. 聚合求最大值:对筛选后的记录按(A,B)分组,取C列的最大值。由于C是布尔类型,只要最近3条里存在True,结果就会是True,完全匹配你给出的示例场景。

示例验证:

对于A='1'、B='GG'的分组,时间戳从新到旧的记录为:

  • 12:16 → False(rank=1)
  • 12:15 → True(rank=2)
  • 12:14 → False(rank=3)
  • 12:12 → False(rank=4,被过滤)

筛选出前3条后,MAX(C)计算结果为True,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:42:43