Welcome to Subscribe On Youtube

1949. Strong Friendship

Description

Table: Friendship

 +-------------+------+ | Column Name | Type | +-------------+------+ | user1_id | int | | user2_id | int | +-------------+------+ (user1_id, user2_id) is the primary key (combination of columns with unique values) for this table. Each row of this table indicates that the users user1_id and user2_id are friends. Note that user1_id < user2_id. 

 

A friendship between a pair of friends x and y is strong if x and y have at least three common friends.

Write a solution to find all the strong friendships.

Note that the result table should not contain duplicates with user1_id < user2_id.

Return the result table in any order.

The result format is in the following example.

 

Example 1:

 Input: Friendship table: +----------+----------+ | user1_id | user2_id | +----------+----------+ | 1 | 2 | | 1 | 3 | | 2 | 3 | | 1 | 4 | | 2 | 4 | | 1 | 5 | | 2 | 5 | | 1 | 7 | | 3 | 7 | | 1 | 6 | | 3 | 6 | | 2 | 6 | +----------+----------+ Output: +----------+----------+---------------+ | user1_id | user2_id | common_friend | +----------+----------+---------------+ | 1 | 2 | 4 | | 1 | 3 | 3 | +----------+----------+---------------+ Explanation: Users 1 and 2 have 4 common friends (3, 4, 5, and 6). Users 1 and 3 have 3 common friends (2, 6, and 7). We did not include the friendship of users 2 and 3 because they only have two common friends (1 and 6). 

Solutions

  • # Write your MySQL query statement below WITH t AS ( SELECT * FROM Friendship UNION ALL SELECT user2_id, user1_id FROM Friendship ) SELECT t1.user1_id, t1.user2_id, COUNT(1) AS common_friend FROM t AS t1 JOIN t AS t2 ON t1.user2_id = t2.user1_id JOIN t AS t3 ON t1.user1_id = t3.user1_id WHERE t3.user2_id = t2.user2_id AND t1.user1_id < t1.user2_id GROUP BY t1.user1_id, t1.user2_id HAVING COUNT(1) >= 3; 

All Problems

All Solutions