【问题标题】:Computing conversion rate by counting TRUE/FALSE statements通过计算 TRUE/FALSE 语句计算转化率
【发布时间】:2021-09-25 21:52:04
【问题描述】:

对不起,如果这听起来很基本;忍受我。

我需要确定 3 个广告的转化率,每个广告代表一个产品;这将是订阅除以点击广告的人数。

列:

  • person_id - 人的唯一标识符
  • 日期 - 向他们展示广告的日期
  • ad_id - 广告内容:ad_1_product1、ad_2_product2 或 ad_3_product3
  • 点击(真/假)- ​​点击广告
  • signed_up - (TRUE/FALSE) 创建了一个帐户
  • 已订阅 (TRUE/FALSE) - 开始付费订阅

我将 clicked、signed_up 和 subscribed 设置为布尔值。

我的代码:

SELECT ad_id, (count(subscribed) / count(clicked)) as CR
FROM  videoadcampaign
WHERE subscribed = 'TRUE' AND clicked = 'TRUE'
GROUP BY ad_id;

当然,上面的代码给我的比率是 1,因为由于这些条件,SQL 仍在计算总数并除以相同的数字。

我完全被卡住了。

我还需要计算点击次数和注册次数的其他 KPI,因此过滤这些布尔值并将它们放入一个比率是我需要做的核心工作。

有没有办法告诉 SQL 计算 CR = SUBS (TRUE) / SUBS (TRUE + FALSE) [或总数],然后按 CLICK = TRUE 过滤?

非常感谢您的帮助!

【问题讨论】:

  • 列数据类型?您使用的是哪个 dbms?
  • 轻松为您提供帮助,向我们展示一些示例表数据和预期结果 - 全部为格式化文本(无图像)。minimal reproducible example
  • 对不起,这是我的第一个问题是SQL。我正在使用 SQL Lite,列设置为布尔值,为 TRUE/FALSE,日期为日期,其余为文本。

标签: sql sqlite


【解决方案1】:

这取决于您的数据库,但一般概念是:

SELECT ad_id,
       (SUM(CASE WHEN subscribed = 'TRUE' THEN 1.0 ELSE 0 END) /
        SUM(CASE WHEN clicked = 'TRUE' THEN 1 ELSE 0 END)
       ) as CR
FROM  videoadcampaign
GROUP BY ad_id;

在许多数据库中,如果列是整数(0 = 假,1 = 真),您可以这样做:

SELECT ad_id, SUM(subscribed) / SUM(clicked) as CR
FROM  videoadcampaign
WHERE clicked = 'TRUE'
GROUP BY ad_id;

甚至:

SELECT ad_id, AVG(subscribed) as CR
FROM  videoadcampaign
WHERE clicked = 'TRUE'
GROUP BY ad_id;

【讨论】:

  • 太好了,效果很好。非常感谢。只是为了让我理解逻辑,查询告诉 SQL 分配“1”仅在条件为真时才计数,否则,它将计数为零?
  • @DavideTaraborrelli 。 . .好吧,1.0 以防您的数据库进行整数除法。
猜你喜欢
  • 2021-09-25
  • 1970-01-01
  • 2019-08-26
  • 2010-12-15
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多