题目难度
简单
题目描述
在 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/