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

如何计算各分类最大last_updated与全局最大更新日期的天数差

实现方案

核心逻辑是通过两个不同的窗口函数分别获取全局最大更新日期、分类维度的最大更新日期,再做日期差计算即可,无需嵌套子查询,通用写法如下:

SELECT
    category,
    last_updated,
    -- 以下日期差逻辑可根据你使用的数据库类型调整
    DATEDIFF(
        MAX(last_updated) OVER (), -- 不加PARTITION的窗口函数计算全表最大更新日期
        MAX(last_updated) OVER (PARTITION BY category) -- 按category分区计算每个分类的最大更新日期
    ) AS day_diff
FROM 你的表名;

不同数据库的日期函数适配

  • MySQL、Hive、Spark SQL:直接使用上面的DATEDIFF写法即可,参数顺序为DATEDIFF(较晚日期, 较早日期),计算结果和你给出的预期值完全匹配
  • PostgreSQL:调整为如下写法即可
    SELECT
        category,
        last_updated,
        (MAX(last_updated) OVER () - MAX(last_updated) OVER (PARTITION BY category))::INTEGER AS day_diff
    FROM 你的表名;
    
  • SQL Server:调整为如下写法即可
    SELECT
        category,
        last_updated,
        DATEDIFF(DAY, MAX(last_updated) OVER (PARTITION BY category), MAX(last_updated) OVER ()) AS day_diff
    FROM 你的表名;
    

结果验证

按你的测试数据计算:
全表最大last_updated为2021-08-26

  • abc分类的最大更新日期为2020-06-14,两个日期差值为438天
  • def分类的最大更新日期和全局最大值一致,差值为0
  • ghi分类的最大更新日期为2020-08-25,差值为1天
    完全匹配你给出的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:24:04