【问题标题】:How to flag id's by a condition?如何通过条件标记 id?
【发布时间】:2022-01-06 13:33:27
【问题描述】:

我想创建一个标记 id 的列,它有一个直接的订单流程。即没有 order_status pendinginfo_required 的 id。

例如id a待处理,所以is_straight 将是假的。 b 没有pending 或info_required,所以它应该是真的。

这是示例数据:

    WITH t1 AS (
SELECT 'a' AS id, 'created' AS status, '2021-11-02 15:04:07'::timestamp AS created_at UNION ALL
SELECT 'a' AS id, 'created' AS status, '2021-11-03 13:23:34'::timestamp AS created_at UNION ALL
SELECT 'a' AS id, 'pending' AS status, '2021-11-07 04:04:46'::timestamp AS created_at UNION ALL
SELECT 'a' AS id, 'successful' AS status, '2021-11-07 13:25:05'::timestamp AS created_at UNION ALL
SELECT 'b' AS id, 'created' AS status, '2021-11-11 16:19:07'::timestamp AS created_at UNION ALL
SELECT 'b' AS id, 'successful' AS status, '2021-11-13 17:57:55'::timestamp AS created_at UNION ALL
SELECT 'c' AS id, 'created' AS status, '2021-11-15 01:09:23'::timestamp AS created_at UNION ALL
SELECT 'c' AS id, 'info_required' AS status, '2021-11-17 11:06:00'::timestamp AS created_at UNION ALL
SELECT 'c' AS id, 'successful' AS status, '2021-11-21 23:35:46'::timestamp AS created_at
    )

【问题讨论】:

    标签: sql snowflake-cloud-data-platform window-functions


    【解决方案1】:

    使用窗口化COUNT_IF:

    SELECT *,
       COUNT_IF(order_status IN ('pending', 'info_required')) OVER(PARTITION BY id) = 0 
                AS is_straight
    FROM t1;
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多