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

基于Presto实现按cust_id聚合取最新地址信息并计算总天数

解决方案:Presto SQL实现分组取最新记录并计算全局总天数

针对你的需求,这里提供符合Presto语法的SQL实现,核心通过窗口函数完成分组取最新记录、全局日期差求和的双重目标:

WITH customer_latest_records AS (
    SELECT 
        cust_id,
        street_id,
        hood_id,
        city_id,
        -- 按cust_id分组,给每组记录按时间降序编号,rn=1即为最新记录
        ROW_NUMBER() OVER (PARTITION BY cust_id ORDER BY start_date DESC) AS record_rank,
        -- 计算所有记录的(end_date - start_date)总和,全局生效
        SUM(end_date - start_date) OVER () AS total_days
    FROM customers
)
SELECT 
    cust_id,
    street_id,
    hood_id,
    city_id,
    total_days
FROM customer_latest_records
WHERE record_rank = 1;

关键细节说明:

  • 若判断“最新记录”的依据是end_date而非start_date,只需将ORDER BY start_date DESC替换为ORDER BY end_date DESC即可;
  • SUM(end_date - start_date) OVER ()的空窗口范围(OVER ())表示计算全表的日期差总和,确保每个分组的最新记录都能携带全局的total_days值;
  • 若存在同一cust_id下多条时间完全相同的“最新记录”,ROW_NUMBER()会随机保留一条,如需保留所有同时间的最新记录,可改用RANK()或DENSE_RANK()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:40:24