在雪花中形成查询需要指导

Need guidance in forming a query in snowflake

SELECT id,
    login_id,
    count,
    case when count = 0 then 'Cat_A'
       WHEN  count between 1 and 10 then 'Cat_B'
       WHEN  count >  10 then 'Cat_C' 
       WHEN count IS NULL THEN 'Cat D'
       END as Category
FROM 
    (
        select id,login_id,min(ord_count) AS count
        FROM table_1 X
            JOIN table_2 Y
                ON X.id_col = Y.id_col
        WHERE date = '2022-02-02'
            AND login_id = 'True'
        group by id,login_id
    )A
    LEFT JOIN
        (
            SELECT id,COUNT(X.ord_no) AS count_of_orders
            FROM table_1 X
            WHERE X.date = '2022-02-02'
            group by id
        )B
        ON A.id=B.id

当我连接这两个表时,我得到了不匹配记录的 NULL 值。 我需要将那些 NULL 记录替换为一些硬编码值,比如 'XYZ'.

请提供有关如何实现此目标的任何指导?

  • 所以顶级 select 需要命名它正在使用的 ID(其他数据库不需要这个雪花),假设你是 selecting 来自 Ab.id 可能会丢失,应该是 a.id

  • count_of_orders 未使用,因此目前 B 的 LEFT JOIN 毫无意义,鉴于您的问题是关于 LEFT JOIN 这一定是您所指的列? ?

  • 替换 NULL 值可以通过 COALESCE or NVL or ZEROIFNULL 完成,因为唯一的空值是计数,zeroifnull 在这里似乎有意义。

这一切让我觉得你的 SQL 需要看起来像:

SELECT 
    a.id,
    a.login_id,
    a.count,
    case 
        WHEN a.count = 0 then 'Cat_A'
        WHEN a.count between 1 and 10 then 'Cat_B'
        WHEN a.count >  10 then 'Cat_C' 
        WHEN a.count IS NULL THEN 'Cat D'
    END as Category,
    ZEROIFNULL(b.count_of_orders) as count_of_orders
FROM (
    SELECT 
        id,
        login_id,
        min(ord_count) AS count
    FROM table_1 AS X
    JOIN table_2 AS Y
        ON X.id_col = Y.id_col
    WHERE date = '2022-02-02'
        AND login_id = 'True'
    group by id,login_id
) as A
LEFT JOIN (
    SELECT 
        x.id,
        COUNT(X.ord_no) AS count_of_orders
    FROM table_1 as X
    WHERE X.date = '2022-02-02'
    group by x.id
)as B
    ON A.id=B.id

A sub-select 确实应该使用您命名为 XY 的别名,以便我们知道哪些表 idlogin_id ,ord_count,&date都来自.