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

禁用GROUP BY/DISTINCT时,如何查询指定日期前各活动的最新状态?

解决方案

可以利用NOT EXISTS子查询配合WHERE子句实现需求,核心逻辑是:筛选出指定日期前的所有记录,同时确保当前记录是对应活动在该日期范围内的最新记录(即不存在同活动、同日期范围但日期更大的记录)。

对应的SQL语句如下(假设表名为activity_tracking):

SELECT a.*
FROM activity_tracking a
WHERE a.Date <= '9月11日'
AND NOT EXISTS (
    SELECT 1
    FROM activity_tracking b
    WHERE b.Activity = a.Activity
    AND b.Date <= '9月11日'
    AND b.Date > a.Date
)

逻辑说明

  1. 外层查询先筛选出所有Date <= '9月11日'的记录;
  2. 内层子查询检查:对于当前记录的活动,是否存在另一条记录满足同活动、日期不晚于9月11日且日期比当前记录更大;
  3. 通过NOT EXISTS排除掉那些存在更晚记录的条目,最终剩下的就是每个活动在指定日期前的最新状态记录。

验证原始数据

  • 对于Activity 100:9月10日的记录,子查询找不到同活动、日期<=11日且比10日大的记录(9月12日超过11日,不满足条件),因此这条记录被保留;
  • 对于Activity 110:9月9日的记录,子查询找不到同活动、日期<=11日且比9日大的记录(9月12日超过11日),因此这条记录被保留;而9月8日的记录会被排除,因为存在9月9日的同活动记录日期更大。

最终输出结果完全符合期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:30:18