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

SQL查询:筛选昨日带x标签今日带y标签的商家

筛选连续两日标签变化的商家SQL方案

假设合并后的临时表名为temp_tags,包含字段merchant(商家名)、date(日期)、tag(标签),以下几种方法都能满足需求:

方法1:自连接(直观易读)

通过将表与自身连接,匹配同一商家的两日标签记录:

SELECT DISTINCT t1.merchant
FROM temp_tags t1
JOIN temp_tags t2 
  ON t1.merchant = t2.merchant
WHERE t1.date = '2023-02-09' 
  AND t1.tag = 'x'
  AND t2.date = '2023-02-10' 
  AND t2.tag = 'y';
  • 用DISTINCT避免同一商家因重复记录导致的结果重复
  • 如果日期字段含时间戳,需用DATE(t1.date)提取纯日期部分,比如DATE(t1.date) = '2023-02-09'

方法2:分组聚合(适合批量验证多条件)

先过滤目标日期的数据,再按商家分组,通过聚合函数验证两日标签都存在:

SELECT merchant
FROM temp_tags
WHERE date IN ('2023-02-09', '2023-02-10')
GROUP BY merchant
HAVING SUM(CASE WHEN date = '2023-02-09' AND tag = 'x' THEN 1 ELSE 0 END) > 0
   AND SUM(CASE WHEN date = '2023-02-10' AND tag = 'y' THEN 1 ELSE 0 END) > 0;
  • 这种方式可以轻松扩展,比如增加更多日期或标签的验证条件

方法3:窗口函数(灵活处理日期序列)

用LAG窗口函数获取同一商家前一日的标签,直接筛选符合变化条件的记录:

WITH merchant_daily_tags AS (
  SELECT 
    merchant,
    date,
    tag,
    LAG(tag) OVER (PARTITION BY merchant ORDER BY date) AS previous_day_tag
  FROM temp_tags
  WHERE date BETWEEN '2023-02-09' AND '2023-02-10'
)
SELECT DISTINCT merchant
FROM merchant_daily_tags
WHERE date = '2023-02-10' 
  AND tag = 'y' 
  AND previous_day_tag = 'x';
  • 适合需要处理连续多日标签变化的场景,只需调整日期范围即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:41:12