返回介绍

solution / 1100-1199 / 1132.Reported Posts II / README

发布于 2024-06-17 01:03:23 字数 3072 浏览 0 评论 0 收藏 0

1132. 报告的记录 II

English Version

题目描述

动作表: Actions

+---------------+---------+
| Column Name   | Type  |
+---------------+---------+
| user_id     | int   |
| post_id     | int   |
| action_date   | date  |
| action    | enum  |
| extra     | varchar |
+---------------+---------+
这张表可能存在重复的行。
action 列的类型是 ENUM,可能的值为 ('view', 'like', 'reaction', 'comment', 'report', 'share')。
extra 列拥有一些可选信息,例如:报告理由(a reason for report)或反应类型(a type of reaction)等。

 

移除表: Removals

+---------------+---------+
| Column Name   | Type  |
+---------------+---------+
| post_id     | int   |
| remove_date   | date  | 
+---------------+---------+
这张表的主键是 post_id(具有唯一值的列)。
这张表的每一行表示一个被移除的帖子,原因可能是由于被举报或被管理员审查。

 

编写解决方案,统计在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位

结果的格式如下。

 

示例 1:

输入:
Actions table:
+---------+---------+-------------+--------+--------+
| user_id | post_id | action_date | action | extra  |
+---------+---------+-------------+--------+--------+
| 1     | 1     | 2019-07-01  | view   | null   |
| 1     | 1     | 2019-07-01  | like   | null   |
| 1     | 1     | 2019-07-01  | share  | null   |
| 2     | 2     | 2019-07-04  | view   | null   |
| 2     | 2     | 2019-07-04  | report | spam   |
| 3     | 4     | 2019-07-04  | view   | null   |
| 3     | 4     | 2019-07-04  | report | spam   |
| 4     | 3     | 2019-07-02  | view   | null   |
| 4     | 3     | 2019-07-02  | report | spam   |
| 5     | 2     | 2019-07-03  | view   | null   |
| 5     | 2     | 2019-07-03  | report | racism |
| 5     | 5     | 2019-07-03  | view   | null   |
| 5     | 5     | 2019-07-03  | report | racism |
+---------+---------+-------------+--------+--------+
Removals table:
+---------+-------------+
| post_id | remove_date |
+---------+-------------+
| 2     | 2019-07-20  |
| 3     | 2019-07-18  |
+---------+-------------+
输出:
+-----------------------+
| average_daily_percent |
+-----------------------+
| 75.00         |
+-----------------------+
解释:
2019-07-04 的垃圾广告移除率是 50%,因为有两张帖子被报告为垃圾广告,但只有一个得到移除。
2019-07-02 的垃圾广告移除率是 100%,因为有一张帖子被举报为垃圾广告并得到移除。
其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75%
注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。

解法

方法一

# Write your MySQL query statement below
WITH
  T AS (
    SELECT
      COUNT(DISTINCT t2.post_id) / COUNT(DISTINCT t1.post_id) * 100 AS percent
    FROM
      Actions AS t1
      LEFT JOIN Removals AS t2 ON t1.post_id = t2.post_id
    WHERE extra = 'spam'
    GROUP BY action_date
  )
SELECT ROUND(AVG(percent), 2) AS average_daily_percent
FROM T;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文