[MySQL] 597. Friend Requests I: Overall Acceptance Rate
2022. 11. 26. 20:01ㆍTIL💡/Database
이게 Easy라니..나 생각보다 SQL을 훨씬 못하는 상태였다니...
프리미엄 가입한 김에 열심히 풀어야겠다.
https://leetcode.com/problems/friend-requests-i-overall-acceptance-rate/
이 문제는 두 테이블을 사용하되, 조인할 필요는 없다.
우선 내가 맞닥뜨린 문제는 크게 두 가지이다.
1. 특별한(distinct한) row의 수와 전체 row 수를 어떻게 같이 SELECT에 올릴까
2. Request 수가 0인 경우는 division by 0이라서 null 값 발생
1번의 경우에는 단순히 괄호를 쳐서 분수의 분자와 분모를 채우면 된다.
2번의 경우에는 COUNT는 NULL을 포함하지 않기 때문에 이에 대해 IFNULL
로 처리를 하면 된다.
그리고 여기서는 소수점 2자리를 요구하기 때문에 ROUND 함수를 사용하면 된다.
SELECT
ROUND(
IFNULL(
(SELECT COUNT(*) FROM (SELECT DISTINCT requester_id, accepter_id FROM RequestAccepted) AS A)
/
(SELECT COUNT(*) FROM (SELECT DISTINCT sender_id, send_to_id FROM FriendRequest) AS B),
0)
, 2) AS accept_rate;
'TIL💡 > Database' 카테고리의 다른 글
[MySQL] 176. Second Highest Salary (0) | 2022.11.26 |
---|---|
[MySQL] 584. Find Customer Referee (0) | 2022.11.26 |
[MySQL] 596. Classes More Than 5 Students(GROUP BY, HAVING) (0) | 2022.11.26 |
[MongoDB] Index의 자료구조는 무엇일까? B-Tree (0) | 2022.10.15 |
[Python] Celery로 비동기 실시간 데이터 적재 및 분석 처리 (0) | 2022.09.09 |