通过计算 TRUE/FALSE 语句来计算点击率

戴维德·塔拉博雷利

这类似于我之前的问题:通过计算 TRUE/FALSE 语句计算转化率

我认为在一个单独的问题中提出这个问题仍然有用,因为它使用了不同的逻辑。

我正在使用 SQLite。

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

列:

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

我将 clicked、signed_up 和 subscribed 设置为 BOOLEAN,其余的是文本。

我的代码:

 SELECT ad_id,
       (SUM(CASE WHEN clicked = 'TRUE' THEN 1 ELSE 0 END) /
       COUNT(person_id) --as total impressions? not sure about this--
       ) AS CTR
FROM  videoadcampaign
GROUP BY ad_id;

结果我得到 0 的点击率。

任何帮助都受到高度赞赏。

福帕斯

BOOLEANSQLite 中没有数据类型,正如您在此处看到的:SQLite 版本 3中的数据类型,但是您可以定义具有该数据类型的列,并且可以在其中存储任何内容,甚至是字符串。

因此,如果您实际上存储在定义为BOOLEAN类似字符串的列中,'FALSE'并且'TRUE'您应该将数据类型定义为 asTEXT或更好,您应该将值存储在其中,例如01代表'FALSE'或 ,'TRUE'并且分别对查询性能更好。

如果列中确实有字符串值,则clicked可以通过以下方式获得所需的结果:

SELECT ad_id, AVG(clicked = 'TRUE') AS CTR
FROM  videoadcampaign
GROUP BY ad_id;

布尔表达式的clicked = 'TRUE'计算结果为0or1AVG()返回所有1s的总和除以总行数。

如果您在列中有类似0或 的(或它们的别名标识符而不是字符串文字),那么它会更简单:1clickedfalsetrue

SELECT ad_id, AVG(clicked) AS CTR
FROM  videoadcampaign
GROUP BY ad_id;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章