首页 >

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

起码要给说明下每个表的字段的含义吧 
这题目压根没写完整吧......
发表于 2025-01-18 14:57:59 回复(2)
题目信息根本不全,以abc做表名也太潦草了,题目目的也不明确。
发表于 2025-04-28 10:39:21 回复(0)
(不关注content的作者,也会收到该内容的曝光并阅读该内容)
SELECT  SUM(read_num)/SUM(show_num) AS fans_ctr
FROM c
JOIN b ON b.content_id=c.content_id
JOIN a ON b.author_id = a.author_id AND c.fans_id=a.fans_id 
-- c表创作内容(content)的曝光对象(fans_id)不一定是该内容创作者粉丝,需选出查看内容的阅读者(fans_id)是内容作者的粉丝的数据
发表于 2025-01-18 10:12:16 回复(0)
首先要确认主表是谁,这道题的要求来看,主表是C 行为明细表,然后使用join B 确认C表的创造内容属于哪个创造者,在join A 确认粉丝都属于哪个创作者, 因为涉及到的字段非唯一字段,所以join A需要用两个字段关联
select sum(read_num)/sum(show_num) fans_ctr from c  join b on c.content_id = b.content_id
 join a on a.author_id = b.author_id and c.fans_id = a.fans_id
发表于 2024-12-24 09:30:48 回复(0)
过不了:
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=b.content_id
where a.fans_id=c.fans_id

官方的能过:
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

这题神经病

发表于 2025-05-08 15:26:56 回复(3)
没写完的条件:1.表明分别为abc 2.命名为fans_ctr
要点:对于一个author,只统计他的粉丝的数据
select sum(read_num)/sum(show_num) fans_ctr
from b
join c
on b.content_id = c.content_id
where (author_id, fans_id) in
(select author_id, fans_id
from a)

发表于 2025-03-06 16:18:55 回复(0)
select
sum(read_num) / sum(show_num) as fans_ctr
from
a,
b,
c
where a.author_id = b.author_id
and b.content_id = c.content_id
and a.fans_id = c.fans_id

发表于 2025-02-05 14:26:11 回复(0)
SELECT
    SUM(CASE WHEN a.fans_id = c.fans_id THEN read_num ELSE 0 END) / SUM(CASE WHEN a.fans_id = c.fans_id THEN show_num ELSE 0 END ) AS fans_ctr
FROM c
JOIN b USING (content_id)
JOIN a USING (author_id)
首先确定主表是c,但是需要a和b的补充信息。
所以用content_id把c和b先连起来,这样c表里就会多一行auhtor的信息。
再用author_id把a连进来。
现在每一条content_id后面会有
1. content响应者id
2. content作者id
3. content作者的原粉丝id
考虑到现实业务中,即使这个人不是TA的粉丝也有可能对他的content做出反应。所以用了CASE WHEN把1和3是同一个人作为条件。
发表于 2025-08-19 14:51:10 回复(0)
WITH author_pl_tb AS
(SELECT b.author_id AS author_id, fans_id, show_num, read_num
FROM c
JOIN b
ON c.content_id = b.content_id)

SELECT SUM(read_num)/SUM(show_num) AS fans_ctr
FROM author_pl_tb apt
WHERE fans_id IN (SELECT fans_id FROM a WHERE author_id = apt.author_id)

为什么大家都是等于 不应该是 IN 吗

发表于 2025-07-07 10:12:51 回复(0)
题目描述不清楚。

对于c表中的每一条记录,和a表存在关联且和b表存在关联,才被纳入统计。

SELECT 
    CASE 
        WHEN SUM(show_num) > 0 THEN SUM(read_num) / SUM(show_num)
        ELSE 0
    END AS fans_ctr
FROM 
c
JOIN b ON b.content_id=c.content_id
JOIN a ON b.author_id = a.author_id AND c.fans_id=a.fans_id 






发表于 2025-04-26 17:44:38 回复(0)
select
sum(read_num)/sum(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 c.fans_id in(select fans_id from a )
为什么这个输出是0.5714,奇怪
发表于 2026-03-28 18:12:45 回复(0)

感觉很多做法都没有考虑 用户会不会被推送未关注的作者发布的作品啊,也可能是这个题目没说清楚,具体思路我觉得这样挺清晰的:

select

    sum(read_num)/sum(show_num) as fans_ctr

from

    c

where

    (content_id,fans_id) in (

        select

            content_id,fans_id

        from  

            a join b on a.author_id = b.author_id

    )
发表于 2026-03-21 13:42:50 回复(0)
起码要给说明下每个表的字段的含义吧 
发表于 2026-03-18 17:40:37 回复(0)
select sum(read_num)/sum(show_num) fans_ctr
from a join b using(author_id)
join c on b.content_id = c.content_id and a.fans_id = c.fans_id

发表于 2026-03-14 18:43:00 回复(0)
c表的粉丝id该为用户id更合适一点
发表于 2026-03-11 22:36:27 回复(0)
又是脑残出题

发表于 2026-03-11 17:05:17 回复(0)
注意连接两个字段,才能表示是粉丝操作
select
sum(read_num)/sum(show_num) fans_ctr
from b
left join c on c.content_id=b.content_id
left join a on a.author_id=b.author_id and a.fans_id=c.fans_id
where a.fans_id is not null

发表于 2026-02-12 13:28:10 回复(0)
SELECT sum(read_num)/sum(show_num) fans_ctr FROM
    (SELECT a.author_id, a.fans_id, b.content_id, c.show_num, c.read_num 
    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

发表于 2026-02-06 10:00:33 回复(0)
看到大家都说题目表述不清楚我就放心了,我还以为是我的问题
发表于 2026-01-30 10:02:31 回复(0)
这个题目没看懂......
select round(sum(read_num) / sum(show_num), 4) as fans_ctr
from c
left join b
on c.content_id = b.content_id
where (author_id, fans_id) in (
    select author_id, fans_id
    from a
)

发表于 2026-01-29 17:06:58 回复(0)