Leetcode_597. 好友申请 I :总体通过率

本文介绍了一种在社交应用中统计好友申请通过率的方法,通过SQL查询语句,计算总的被通过申请数并除以申请总数,得到通过率。同时,提供了进阶查询,按月统计通过率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目难度

简单

题目描述

在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。现在给如下两个表:
在这里插入图片描述
写一个查询语句,求出好友申请的通过率,用 2 位小数表示。通过率由接受好友申请的数目除以申请总数。对于上面的样例数据,你的查询语句应该返回如下结果。

在这里插入图片描述

注意:

  • 通过的好友申请不一定都在表 friend_request 中。在这种情况下,你只需要统计总的被通过的申请数(不管它们在不在原来的申请中),并将它除以申请总数,得到通过率
  • 一个好友申请发送者有可能会给接受者发几条好友申请,也有可能一个好友申请会被通过好几次。这种情况下,重复的好友申请只统计一次。
  • 如果一个好友申请都没有,通过率为 0.00 。
正确答案
SELECT ROUND(
    IFNULL(
        (SELECT COUNT(*) 
        FROM(SELECT DISTINCT requester_id, accepter_id FROM request_accepted) AS t1)
        /
        (SELECT COUNT(*) 
        FROM(SELECT DISTINCT sender_id, send_to_id FROM friend_request) AS t2)
        ,0)
    ,2) AS accept_rate;
进阶

写一个查询语句得到每个月的通过率

SELECT t1.month,ROUND(IFNULL(a_num/r_num,0),2) AS accept_rate
FROM (SELECT Month(accept_date) month,COUNT(DISTINCT requester_id, accepter_id) a_num
    FROM request_accepted
    GROUP BY Month(accept_date)) t1,
    (SELECT Month(request_date) month,COUNT(DISTINCT sender_id, send_to_id) r_num 
    FROM friend_request
    GROUP BY Month(request_date)) t2
WHERE t1.month = t2.month

输出:{“headers”: [“month”, “accept_rate”], “values”: [[6, 0.80]]}

  • 题目来源:
    力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/friend-requests-i-overall-acceptance-rate
  • 答案参考:
    作者:LeetCode
    链接:https://leetcode-cn.com/problems/friend-requests-i-overall-acceptance-rate/solution/hao-you-shen-qing-izong-ti-tong-guo-lu-by-leetcode/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值