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

如何创建带Success count列的SQL视图?基于同A Id行判断

实现方法

假设你的原表名为ticket_table,可以通过以下SQL语句创建符合要求的视图:

CREATE VIEW ticket_view AS
SELECT
    `A Id(A编号)`,
    `B session Id(B会话ID)`,
    `C customer Type(C客户类型)`,
    `D ticket status(D工单状态)`,
    CASE
        WHEN `D ticket status(D工单状态)` = 'Success' 
             AND SUM(CASE WHEN `C customer Type(C客户类型)` = 'vip' THEN 1 ELSE 0 END) 
                 OVER (PARTITION BY `A Id(A编号)` 
                       ORDER BY `B session Id(B会话ID)` 
                       ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) > 0
        THEN 1
        ELSE 0
    END AS `E(Success count)`
FROM ticket_table;

关键逻辑解释

  • 分组范围:PARTITION BY A Id(A编号)`` 确保只在同一个A编号的范围内计算前置行。
  • 行顺序确定:ORDER BY B session Id(B会话ID)`` 用来定义行的先后顺序(如果表中有时间戳这类更精准的排序字段,建议替换这里的会话ID)。
  • 前置vip判断:SUM(...) OVER (...) 会统计当前行之前所有行里客户类型为vip的数量,数量大于0就说明存在前置vip行。
  • 结果赋值:通过CASE WHEN同时判断两个条件——当前工单状态为Success,且存在前置vip行,满足则返回1,否则返回0。

结果验证

执行上述语句后,生成的视图会完全匹配你给出的目标结构:

  • First组的B、C行因为状态是Success且前置有vip行,返回1;
  • Second组的D行虽然状态是Success,但没有前置vip行,返回0;
  • 其余状态为Failed的行都返回0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:15:32