题解 | #请写出计算粉丝ctr的sql语句#

请写出计算粉丝ctr的sql语句

https://www.nowcoder.com/practice/853a6567cf524f63bab0879b8d0bfe62

这道题目要求我们计算粉丝的点击率(CTR),我们要做的事情如下:

1. 确定总体问题

我们需要计算粉丝的CTR,即粉丝对内容的总阅读次数与总曝光次数的比值,公式为:CTR = 总阅读次数 / 总曝光次数。

2. 分析关键问题

  • 连接表:将三个表连接起来,以便获取每个粉丝对内容的行为数据。
  • 计算总阅读次数和总曝光次数:对每个粉丝的阅读次数和曝光次数进行汇总。
  • 计算CTR:计算总阅读次数与总曝光次数的比值。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们需要从 c 表中提取每个粉丝的总曝光次数和总阅读次数。 通过 content_id 关联 b 表,获取对应的 author_id。 通过 author_id 和 fans_id 关联 a 表,确保粉丝和创作者之间存在关系,因此我们使用JOIN将三个表连接起来:

from
    a
    join b on a.author_id = b.author_id
    join c on b.content_id = c.content_id
  • JOIN b ON a.author_id = b.author_id:通过创作者ID连接ab表,以便获取创作者与内容的关系。
  • JOIN c ON b.content_id = c.content_id:通过内容ID连接bc表,以便获取内容的行为数据。
步骤2:计算总阅读次数和总曝光次数

我们使用SUM函数对每个粉丝的阅读次数和曝光次数进行汇总:

select
    sum(c.read_num) / sum(c.show_num) as fans_ctr
  • SUM(c.read_num):计算粉丝对内容的总阅读次数。
  • SUM(c.show_num):计算粉丝对内容的总曝光次数。
步骤3:计算CTR

我们计算总阅读次数与总曝光次数的比值:

sum(c.read_num) / sum(c.show_num) as fans_ctr
  • sum(c.read_num) / sum(c.show_num):CTR = 总阅读次数 / 总曝光次数,计算CTR。
步骤4:过滤数据

我们使用WHERE子句确保粉丝ID匹配:

where
    a.fans_id = c.fans_id
  • WHERE a.fans_id = c.fans_id:确保粉丝ID在ac表中匹配。

完整代码

select
    sum(c.read_num) / sum(c.show_num) as fans_ctr
from
    a
    join b on a.author_id = b.author_id
    join c on b.content_id = c.content_id
where
    a.fans_id = c.fans_id
全部评论
这个题描述的跟答案不一样,按答案就是不分是那个作者,计算粉丝本人对作者内容的点击率(CTR),排除其他无关用户的互动数据。根据where条件 ,统计的是‌特定粉丝群体‌对其关注作者的内容互动效果。
1 回复 分享
发布于 08-25 17:44 河南
问下为什么a直接left join c 然后统计的数值不对呀?
1 回复 分享
发布于 04-10 13:02 云南
为什么是直接算得出一个ctr,不应该是算每一个作者各自的ctr嘛
点赞 回复 分享
发布于 08-14 17:06 广西

相关推荐

10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务