[SQL]597(表2行數/表1行數)+602(表的上下拼接)

597. 好友申請 I :整體經過率

思路:mysql

  1. 統計申請表中的不重複行數,記爲表A
(SELECT COUNT(*)
FROM (SELECT DISTINCT sender_id, send_to_id
      FROM friend_request) A)
  1. 統計接受表中的不重複行數,記爲表B
(SELECT COUNT(*)
FROM (SELECT DISTINCT requester_id, accepter_id
      FROM request_accepted) B)
  1. 表B結果/表A結果,IFNULL(,0)表示爲空輸出0

最終代碼sql

SELECT ROUND(IFNULL(
(SELECT COUNT(*)
FROM (SELECT DISTINCT requester_id, accepter_id
      FROM request_accepted) B)
/
(SELECT COUNT(*)
FROM (SELECT DISTINCT sender_id, send_to_id
      FROM friend_request) A)
,0) ,2) AS accept_rate;

602. 好友申請 II :誰有最多的好友

思路:code

採用UNION ALL將表的requester_id和accepter_id列上下拼接,並建立臨時表Ablog

用COUNT()統計每一個requester_id出現的次數class

將A按照requester_id降序排列request

取第一行。im

SELECT A.requester_id AS id, COUNT(A.requester_id) AS num
FROM(
SELECT requester_id
FROM request_accepted
UNION ALL
SELECT accepter_id
FROM request_accepted) A 
GROUP BY A.requester_id
ORDER BY num DESC
LIMIT 1;
相關文章
相關標籤/搜索