Union / Union All 예제

Jiwon Kim
|2023. 12. 4. 12:39

Leet Code #602. Friend Requests II: Who Has the Most Friends

 

Friend Requests II: Who Has the Most Friends - LeetCode

Can you solve this real interview question? Friend Requests II: Who Has the Most Friends - Table: RequestAccepted +----------------+---------+ | Column Name | Type | +----------------+---------+ | requester_id | int | | accepter_id | int | | accept_date |

leetcode.com

 

 

 

 

[ 문제상황 ] 

 

팔로우 신청 아이디와 수락 아이디, 수락 시점이 나열되어 있는 테이블에서 

각 id 별 최종 친구 수를 세어서 가장 친구 수가 많은 id와, 그 친구 수를 출력하는 문제

 


 

[ 해결방법 ]

 

requester_id 목록을 쭉 나열하고, 

 

SELECT requester_id AS id

FROM RequestAccepted

 

accepter_id 목록도 쭉 나열한다.

 

SELECT accepter_id AS id

FROM RequestAccepted

 

 

그 다음 두 테이블을 UNION ALL로 이어주면 팔로우 신청 아이디와 수락 아이디가 한 컬럼에 쭉 나열된다. 

여기서 ID 별로 횟수를 세어주면 (신청을 통해 생긴 친구 수) + (수락을 통해 생긴 친구 수) = (총 친구 수)를 구할 수 있다. 

 

SELECT id, COUNT(*) AS num 

FROM (

    SELECT requester_id AS id
    
    FROM RequestAccepted
    
  UNION ALL 
  
    SELECT accepter_id AS id
    
    FROM RequestAccepted
    
) friends_count

GROUP BY id

ORDER BY num DESC

LIMIT 1

 

 

 

 


 

Leet Code #1164. Product Price at a Given Date

 

 

 


 

Leet Code #1789. Primary Department for Each Employee

 

'Study > SQL' 카테고리의 다른 글

Window Function 예제  (0) 2023.11.16
SUB QUERY 예제  (0) 2023.10.23
SQL : timestamp 다루기  (0) 2023.10.17
SQL : Delete  (0) 2023.10.05
SQL : Update  (0) 2023.10.05