这类似于我之前的问题:通过计算 TRUE/FALSE 语句计算转化率
我认为在一个单独的问题中提出这个问题仍然有用,因为它使用了不同的逻辑。
我正在使用 SQLite。
我需要确定 3 个广告的点击率,每个广告代表一个产品;这将是订阅除以点击广告的人数。
列:
我将 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 的点击率。
任何帮助都受到高度赞赏。
BOOLEAN
SQLite 中没有数据类型,正如您在此处看到的:SQLite 版本 3中的数据类型,但是您可以定义具有该数据类型的列,并且可以在其中存储任何内容,甚至是字符串。
因此,如果您实际上存储在定义为BOOLEAN
类似字符串的列中,'FALSE'
并且'TRUE'
您应该将数据类型定义为 asTEXT
或更好,您应该将值存储在其中,例如0
或1
代表'FALSE'
或 ,'TRUE'
并且分别对查询性能更好。
如果列中确实有字符串值,则clicked
可以通过以下方式获得所需的结果:
SELECT ad_id, AVG(clicked = 'TRUE') AS CTR
FROM videoadcampaign
GROUP BY ad_id;
布尔表达式的clicked = 'TRUE'
计算结果为0
or1
并AVG()
返回所有1
s的总和除以总行数。
如果您在列中有类似0
或 的值(或它们的别名和标识符而不是字符串文字),那么它会更简单:1
clicked
false
true
SELECT ad_id, AVG(clicked) AS CTR
FROM videoadcampaign
GROUP BY ad_id;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句