1132 报告的记录II

SQL架构

Create table If Not Exists Actions_1132 (user_id int, post_id int, action_date date, action ENUM('view', 'like', 'reaction', 'comment', 'report', 'share'), extra varchar(10));
create table if not exists Removals_1132 (post_id int, remove_date date);
Truncate table Actions_1132;
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('1', '1', '2019-07-01', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('1', '1', '2019-07-01', 'like', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('1', '1', '2019-07-01', 'share', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('2', '2', '2019-07-04', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('2', '2', '2019-07-04', 'report', 'spam');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('3', '4', '2019-07-04', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('3', '4', '2019-07-04', 'report', 'spam');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('4', '3', '2019-07-02', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('4', '3', '2019-07-02', 'report', 'spam');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('5', '2', '2019-07-03', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('5', '2', '2019-07-03', 'report', 'racism');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('5', '5', '2019-07-03', 'view', 'None');
insert into Actions_1132 (user_id, post_id, action_date, action, extra) values ('5', '5', '2019-07-03', 'report', 'racism');
Truncate table Removals_1132;
insert into Removals_1132 (post_id, remove_date) values ('2', '2019-07-20');
insert into Removals_1132 (post_id, remove_date) values ('3', '2019-07-18');

动作表: 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。
这张表的每一行表示一个被移除的帖子,原因可能是由于被举报或被管理员审查。

编写一段 SQL 来查找:在被报告为垃圾广告的帖子中,被移除的帖子的每日平均占比,四舍五入到小数点后 2 位。

查询结果的格式如下:

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  |
+---------+-------------+

Result table:
+-----------------------+
| average_daily_percent |
+-----------------------+
| 75.00                 |
+-----------------------+
2019-07-04 的垃圾广告移除率是 50%,因为有两张帖子被报告为垃圾广告,但只有一个得到移除。
2019-07-02 的垃圾广告移除率是 100%,因为有一张帖子被举报为垃圾广告并得到移除。
其余几天没有收到垃圾广告的举报,因此平均值为:(50 + 100) / 2 = 75%
注意,输出仅需要一个平均值即可,我们并不关注移除操作的日期。

解题

select round(avg(proportion) * 100, 2) as average_daily_percent
from (select a.action_date, count(distinct r.post_id) / count(distinct a.post_id) as proportionfrom actions_1132 aleft join Removals_1132 ron a.post_id = r.post_idwhere extra = 'spam'group by a.action_date
)t;

Leetcode力扣 MySQL数据库 1132 报告的记录II相关推荐

  1. Leetcode力扣 MySQL数据库 1264 页面推荐

    1264 页面推荐 SQL架构 Create table If Not Exists Friendship_1264 (user1_id int, user2_id int); Create tabl ...

  2. Leetcode力扣 MySQL数据库 1468 计算税后工资

    1468 计算税后工资 SQL架构 Create table If Not Exists Salaries_1468 (company_id int, employee_id int, employe ...

  3. Leetcode力扣 MySQL数据库 574 当选者

    574 当选者 SQL架构 Create table If Not Exists Candidate_574 (id int, Name varchar(255)); Create table If ...

  4. LeetCode MySQL 1132. 报告的记录 II

    文章目录 1. 题目 2. 解题 1. 题目 动作表: Actions +---------------+---------+ | Column Name | Type | +------------ ...

  5. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  6. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  7. 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java

    <LeetCode力扣练习>第96题 不同的二叉搜索树 Java 一.资源 题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回 ...

  8. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  9. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  10. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

最新文章

  1. HDU 4286 Data Handler [栈,双端队列]
  2. 即将毕业的你,做好当一个社会人的准备了吗?
  3. SpringBoot 实战:如何从零开发 “淘宝”
  4. ETL之Kettle
  5. java编写正则表达式引擎_从0到1打造正则表达式执行引擎(一)
  6. Java中的System.getProperty()设置参数的方法
  7. word20161219
  8. 看阮一峰ES6 笔记
  9. lsass.exe和smss.exe病毒专杀工具——即磁碟机病毒专杀工具(转载)
  10. 【C++】【记录自己的自学过程】用纯C++实现模拟银行注册 存款 取款 贷款 升级账户 等服务。主要用的内容包括多态,封装。
  11. 人生七年,耗时56年跟拍14个孩子,结局道尽人生残酷真相
  12. (九)学习笔记autoware源码core_planning(lane_select)
  13. python主流解析库(re beautifulsoup pyquery xpath)实战--爬取猫眼电影排行
  14. 一、任天堂ns (Nintendo Switch) 上手
  15. pdf转换成jpg格式快准狠的转换方法
  16. Mac进行Homebrew安装配置
  17. python对文件进行tar和gz格式的压缩和解压缩(亲测,可用)
  18. 小米笔记本air 13.3 2018款参数
  19. 51单片机:设计电子密码锁
  20. 关于Keil开发C51单片机的头文件问题

热门文章

  1. 斗战神与服务器断开响应,win10系统玩斗战神游戏掉线的设置办法
  2. Scikit-learn中的Lasso/LassoCV以及R^2可决系数的分析与讨论
  3. Python OS模块详解(完善版本)
  4. 【java实现定时自动发送QQ消息】
  5. 使用libimobiledevice在linux上挂载iphone6
  6. html文件怎么可以查错,CSS_CSS 网页布局中易犯的10个小错误小结,1. 检查HTML元素是否有拼写错误 - phpStudy...
  7. 电脑每次开机都要硬盘自检percent complete
  8. 爱也可以量化?用4个公式表征爱情
  9. 怎么让照片变年轻_PS高手让你变得更年轻
  10. dx12 龙书第十六章学习笔记 -- 实例化与视锥体剔除