题目难度
中等
题目描述
编写一段 SQL 来查找:在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位。
2019-07-04 的垃圾广告移除率是 50%,因为有两张帖子被报告为垃圾广告,但只有一个得到移除。
2019-07-02 的垃圾广告移除率是 100%,因为有一张帖子被举报为垃圾广告并得到移除。
其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75%
注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。
正确答案
select round(avg(daily_percent)*100,2) average_daily_percent
from
(select count(distinct r.post_id)/ count(distinct t.post_id) as daily_percent
from
(select post_id,action_date
from Actions
where extra='spam') t
left join Removals r
on t.post_id=r.post_id
group by action_date)t1
注意计数时去重。原表中同一帖子可能被不同用户贴上垃圾标签,所以同一垃圾帖子可能有多条重复数据。计数时去重。因坐标有重复数据,所以移除表连接时也会多出数据,也应去重。否则报错。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reported-posts-ii