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

为获取用户最新A/B/C事件行的SQL查询添加has_x标记列

修改后的SQL查询语句

假设你的基础查询是通过窗口函数获取用户最新的A/B/C事件行,以下是添加has_x标记列的完整查询:

WITH user_x_status AS (
    -- 统计每个用户是否存在code为X的事件
    SELECT
        user_id,
        CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS has_x
    FROM events
    WHERE code = 'X'
    GROUP BY user_id
),
latest_abc_events AS (
    -- 原逻辑:获取每位用户最新的A/B/C事件行
    SELECT
        e.user_id,
        e.event_time,
        e.code,
        -- 保留你需要的其他字段
        ROW_NUMBER() OVER (PARTITION BY e.user_id ORDER BY e.event_time DESC) AS rn
    FROM events e
    WHERE e.code IN ('A', 'B', 'C')
)
SELECT
    l.user_id,
    l.event_time,
    l.code,
    -- 列出你需要的其他字段
    COALESCE(u.has_x, 0) AS has_x
FROM latest_abc_events l
LEFT JOIN user_x_status u ON l.user_id = u.user_id
WHERE l.rn = 1;

关键说明

  • user_x_status 子查询:通过分组聚合生成用户的X事件标记,1表示存在X事件,0表示不存在。
  • LEFT JOIN + COALESCE:确保没有X事件的用户也能被保留,将关联后的NULL值统一转为0。
  • 如果你的原查询用的是其他方式(比如通过MAX(event_time)关联获取最新行),只需替换latest_abc_events部分的逻辑,再和user_x_status关联即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:27:04