当两个条件都是正确的时如何使用案例语句,您只需要显示一个条件

发布于 2025-02-10 17:53:33 字数 649 浏览 1 评论 0原文

查询:

SELECT
  DISTINCT userId,
  sessionId,
  CASE
    WHEN b.pageType = 'confirm' THEN 'User_converted'
  ELSE
  'Not_converted'
END
  AS conversion_index

  
FROM (
  SELECT
    userId,
    sessionId,
    p.createdat page_time,
    p.pageType
  FROM
    ccart.sessv6_79633508 AS sess,
    UNNEST(pages)p
  WHERE
    sess.createdAt >= TIMESTAMP('2021-07-01')
    AND sess.createdAt <= TIMESTAMP ('2021-10-11')
    AND userId = '206885636.2915067519'
    AND sessionId = 'GH178U' )b

我尝试了此查询,我希望结果为“是或否”字段conversion_index

,但是由于给定用户两个语句都是正确的,因此

我想要的只是我想要的两个行是,如果页面类型='确认'确认'条件是正确的,那么返回值作为“是”否

query:

SELECT
  DISTINCT userId,
  sessionId,
  CASE
    WHEN b.pageType = 'confirm' THEN 'User_converted'
  ELSE
  'Not_converted'
END
  AS conversion_index

  
FROM (
  SELECT
    userId,
    sessionId,
    p.createdat page_time,
    p.pageType
  FROM
    ccart.sessv6_79633508 AS sess,
    UNNEST(pages)p
  WHERE
    sess.createdAt >= TIMESTAMP('2021-07-01')
    AND sess.createdAt <= TIMESTAMP ('2021-10-11')
    AND userId = '206885636.2915067519'
    AND sessionId = 'GH178U' )b

I have tried this query and I want result as yes or No for field conversion_index

but as both statements are true for a given user, hence two rows are appearing

All I want is if page type = 'confirm' condition is true, then return value as 'yes' else No

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山川志 2025-02-17 17:53:33

如果用户已经看到了页面类型='确认'甚至一次,则值应该为'是',否则“否”:

SELECT
      userId
    , sessionId
    , max(conversion_index) AS conversion_index
FROM (
    SELECT userId
        , sessionId
        , CASE 
            WHEN p.pageType = 'confirm'
                THEN 'Yes'
            ELSE 'No'
            END AS conversion_index
    FROM ccart.sessv6_79633508 AS sess
        , UNNEST(pages) p
    WHERE sess.createdAt >= TIMESTAMP ('2021-07-01')
        AND sess.createdAt <= TIMESTAMP ('2021-10-11')
        AND userId = '206885636.2915067519'
        AND sessionId = 'GH178U'
    ) b
GROUP BY
      userId
    , sessionId

如果您想为每个用户最多2行(一个是对另一个用户),请尝试移动原始情况表达查询的一个“图层”:

SELECT DISTINCT
      userId
    , sessionId
    , conversion_index
FROM (
    SELECT userId
        , sessionId
        , CASE 
            WHEN p.pageType = 'confirm'
                THEN 'Yes'
            ELSE 'No'
            END AS conversion_index
    FROM ccart.sessv6_79633508 AS sess
        , UNNEST(pages) p
    WHERE sess.createdAt >= TIMESTAMP ('2021-07-01')
        AND sess.createdAt <= TIMESTAMP ('2021-10-11')
        AND userId = '206885636.2915067519'
        AND sessionId = 'GH178U'
    ) b

因此,如果所有用户页面的全部p.pageType ='确认',您将获得是YES 仅限,如果所有用户页面的全部 不是 p.pagetype ='确认'您只会获得 no ,否则您将获得一行是,该用户的另一行否。

If user has seen page type = 'confirm' even once, then value should be 'Yes', otherwise 'No':

SELECT
      userId
    , sessionId
    , max(conversion_index) AS conversion_index
FROM (
    SELECT userId
        , sessionId
        , CASE 
            WHEN p.pageType = 'confirm'
                THEN 'Yes'
            ELSE 'No'
            END AS conversion_index
    FROM ccart.sessv6_79633508 AS sess
        , UNNEST(pages) p
    WHERE sess.createdAt >= TIMESTAMP ('2021-07-01')
        AND sess.createdAt <= TIMESTAMP ('2021-10-11')
        AND userId = '206885636.2915067519'
        AND sessionId = 'GH178U'
    ) b
GROUP BY
      userId
    , sessionId

If you wanted up to 2 rows for each user (one for Yes the other for No) try moving the original case expression down one "layer" of the query:

SELECT DISTINCT
      userId
    , sessionId
    , conversion_index
FROM (
    SELECT userId
        , sessionId
        , CASE 
            WHEN p.pageType = 'confirm'
                THEN 'Yes'
            ELSE 'No'
            END AS conversion_index
    FROM ccart.sessv6_79633508 AS sess
        , UNNEST(pages) p
    WHERE sess.createdAt >= TIMESTAMP ('2021-07-01')
        AND sess.createdAt <= TIMESTAMP ('2021-10-11')
        AND userId = '206885636.2915067519'
        AND sessionId = 'GH178U'
    ) b

So if all for a user pages are p.pageType = 'confirm' you would get Yes only, if all for a user pages are not p.pageType = 'confirm' you would get No only, otherwise you get one row Yes and another row No for that user.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文