问题描述:

在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。现在给如下两个表:

表: friend_request

| sender_id | send_to_id |request_date|
|-----------|------------|------------|
| 1         | 2          | 2016_06-01 |
| 1         | 3          | 2016_06-01 |
| 1         | 4          | 2016_06-01 |
| 2         | 3          | 2016_06-02 |
| 3         | 4          | 2016-06-09 |

表: request_accepted

| requester_id | accepter_id |accept_date |
|--------------|-------------|------------|
| 1            | 2           | 2016_06-03 |
| 1            | 3           | 2016-06-08 |
| 2            | 3           | 2016-06-08 |
| 3            | 4           | 2016-06-09 |
| 3            | 4           | 2016-06-10 |

写一个查询语句,求出好友申请的通过率,用 2 位小数表示。通过率由接受好友申请的数目除以申请总数。

对于上面的样例数据,你的查询语句应该返回如下结果。

|accept_rate|
|-----------|
|       0.80|

注意:

通过的好友申请不一定都在表 friend_request 中。在这种情况下,你只需要统计总的被通过的申请数(不管它们在不在原来的申请中),并将它除以申请总数,得到通过率
一个好友申请发送者有可能会给接受者发几条好友申请,也有可能一个好友申请会被通过好几次。这种情况下,重复的好友申请只统计一次。
如果一个好友申请都没有,通过率为 0.00 。

解释: 总共有 5 个申请,其中 4 个是不重复且被通过的好友申请,所以成功率是 0.80 。

SQL语句,拿去即可运行:

表:friend_request

/*Navicat Premium Data TransferSource Server         : 我的mysqlSource Server Type    : MySQLSource Server Version : 50736Source Host           : 8.136.255.28:3306Source Schema         : testTarget Server Type    : MySQLTarget Server Version : 50736File Encoding         : 65001Date: 12/01/2022 15:02:21
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for friend_request
-- ----------------------------
DROP TABLE IF EXISTS `friend_request`;
CREATE TABLE `friend_request`  (`id` int(10) NOT NULL AUTO_INCREMENT,`sender_id` int(10) DEFAULT NULL,`send_to_id` int(10) DEFAULT NULL,`request_date` datetime(0) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of friend_request
-- ----------------------------
INSERT INTO `friend_request` VALUES (1, 1, 2, '2022-01-12 14:32:41');
INSERT INTO `friend_request` VALUES (2, 1, 3, '2022-01-12 14:32:44');
INSERT INTO `friend_request` VALUES (3, 1, 4, '2022-01-12 14:32:47');
INSERT INTO `friend_request` VALUES (4, 2, 3, '2022-01-12 14:32:50');
INSERT INTO `friend_request` VALUES (5, 3, 4, '2022-01-12 14:32:53');SET FOREIGN_KEY_CHECKS = 1;

request_accepted:

/*Navicat Premium Data TransferSource Server         : 我的mysqlSource Server Type    : MySQLSource Server Version : 50736Source Host           : 8.136.255.28:3306Source Schema         : testTarget Server Type    : MySQLTarget Server Version : 50736File Encoding         : 65001Date: 12/01/2022 15:02:28
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for request_accepted
-- ----------------------------
DROP TABLE IF EXISTS `request_accepted`;
CREATE TABLE `request_accepted`  (`id` int(10) NOT NULL AUTO_INCREMENT,`requester_id` int(10) DEFAULT NULL,`accepter_id` int(10) DEFAULT NULL,`accept_date` datetime(0) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of request_accepted
-- ----------------------------
INSERT INTO `request_accepted` VALUES (1, 1, 2, '2022-01-12 14:34:57');
INSERT INTO `request_accepted` VALUES (2, 1, 3, '2022-01-12 14:34:59');
INSERT INTO `request_accepted` VALUES (3, 2, 3, '2022-01-12 14:35:01');
INSERT INTO `request_accepted` VALUES (4, 3, 4, '2022-01-12 14:35:04');
INSERT INTO `request_accepted` VALUES (5, 3, 4, '2022-01-12 14:35:07');SET FOREIGN_KEY_CHECKS = 1;
SELECTround(( SELECT count( DISTINCT concat( r.requester_id, r.accepter_id ) ) FROM request_accepted r ) / count( f.id ),2 ) AS rate
FROM`friend_request` f

运行结果:

大佬的自动忽略,需要的cv运行一下,感受会不一样

我要刷100道算法题,第92道

leetcode597. 好友申请 I :总体通过率(必会)相关推荐

  1. leetcode597. 好友申请 I :总体通过率(SQL)

    在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请.现在给如下两个表: 表: friend_request | sender_id | send ...

  2. LeetCode--597. 好友申请 I :总体通过率

    建表 CREATE TABLE friend_request ( sender_id INT, send_to_id INT, request_date DATE ); CREATE TABLE re ...

  3. Leetcode-Mysql题目及知识点总结(597. 好友申请 I:总体通过率)

    计算机小白QAQ,因为想找数分岗暑期实习所以充了会员想集中刷一下leetcode的mysql部分.写这个系列博文和大家们交流一下,后面也会持续更新面经准备的一些问题,欢迎同好们一起交流,求大佬轻喷QA ...

  4. LeetCode MySQL 597. 好友申请 I :总体通过率

    文章目录 1. 题目 2. 解题 1. 题目 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请.现在给如下两个表: 表: friend_req ...

  5. leetcode简单之597.好友申请I:总体通过率

    表:FriendRequest Column Name Type sender_id int send_to_id int request_date date 此表没有主键,它可能包含重复项. 该表包 ...

  6. LeetCode MySQL 602. 好友申请 II :谁有最多的好友(union all)

    文章目录 1. 题目 2. 解题 1. 题目 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请. 表 request_accepted 存储了 ...

  7. java实现好友添加_SpringBoot+LayIM+t-io 实现好友申请通知流程

    前言 在上一篇 Spring boot + LayIM + t-io 文件上传. 监听用户状态的实现 中,已经介绍了两个小细节:用户的在离线状态和群人数的状态变化.今天的主要内容就是用户加好友的实现. ...

  8. leecode 数据库: 602. 好友申请 II :谁有最多的好友

    数据导入: Create table If Not Exists RequestAccepted (requester_id int not null, accepter_id int null, a ...

  9. 大家知道不接收微信的“通过手机号添加的好友申请”要怎么弄吗

    在当今社交化的互联网时代,微信已成为人们日常生活中不可或缺的一部分.但是,在使用微信的过程中,我们也会面临一些安全和隐私方面的问题,其中之一就是收到陌生人的好友申请. 通过手机号搜索添加好友是一种常见 ...

最新文章

  1. 自学python找工作工资-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
  2. bzoj 5340: [Ctsc2018]假面
  3. MySQL的一级索引和二级索引介绍,HBase中提到的二级索引【笔记自用】
  4. 托福备考有用的心得 ——转载
  5. java字符匹配,Java:匹配字符串中的短语
  6. 人工智能应用上的九大障碍
  7. Java:将JDBC ResultSet作为JSON流式传输
  8. android 转发短信
  9. wireshark过滤使用
  10. Java 算法 换零钞
  11. L3-022 地铁一日游 (30 分)-PAT 团体程序设计天梯赛 GPLT
  12. java音乐网站源码_Vue + SpringBoot + MyBatis 音乐网站
  13. 使用iMazing创建配置文件时的几个重要首选项组
  14. java编程基础 | 练习题
  15. Windows 10 的快捷关机方式
  16. 自动化测试:Selenium原理及安装教程
  17. 著名Wiki站点一览
  18. 嵌入式开发使用虚拟机的基本服务安装
  19. Python实例浅谈--Python与C/C++相互调用
  20. 0.前端简历编写和面试前准备

热门文章

  1. ZOJ3963 【gay gay 的贪心】
  2. Python 多项式预测2019年天猫销售额
  3. 《鬼泣-巅峰之战》产品分析:如何将ACT游戏改编成ARPG手游 ​
  4. UVA12563: Jin Ge Jin Qu hao(类01背包)
  5. linux—常用gdb调试命令汇总
  6. c#调用TeamViewer或AnyDesk实现远程控制
  7. Mysql全文检索语法,MATCH ……AGAINST 模式
  8. css中justify用法,CSS text-justify用法及代码示例
  9. python CTP 更换前置机重连
  10. 计算机专业学生的自我介绍英语翻译,大学生自我介绍英文版带翻译.doc