-
[LeetCode Medium] 1341. Movie RatingSQL 문제 풀이 2024. 1. 12. 12:32
테이블 정보
문제
Write a solution to:
- Find the name of the user who has rated the greatest number of movies. In case of a tie, return the lexicographically smaller user name.
- Find the movie name with the highest average rating in February 2020. In case of a tie, return the lexicographically smaller movie name.
결과 예시
정답 코드 (MySQL)
(SELECT u.name AS results FROM Users u JOIN MovieRating mr ON u.user_id = mr.user_id GROUP BY u.user_id ORDER BY COUNT(mr.rating) DESC, u.name LIMIT 1) UNION ALL (SELECT m.title AS results FROM MovieRating mr JOIN Movies m ON mr.movie_id = m.movie_id WHERE DATE_FORMAT(mr.created_at, '%Y-%m') = '2020-02' GROUP BY m.title ORDER BY AVG(mr.rating) DESC, m.title LIMIT 1);
문제 풀이
1. UNION ALL
가장 많은 영화를 평점한 사용자의 이름을 조회하는 쿼리와
2020년 2월 평균 평점이 가장 높은 영화명을 조회하는 쿼리를
UNION ALL을 통해, 각 결과들을 합쳐준다.
UNION (DISTINCT) vs UNION ALL
- UNION (DISTINCT) : 중복된 ROW는 제거하여 쿼리의 결과들을 합친다.
- UNION ALL : 중복제거를 하지 않고 쿼리의 결과들을 합친다.
해당 문제의 경우, 영화의 이름과 사용자의 이름이 겹치는 경우가 존재하기 때문에
UNION ALL을 사용하여 중복되는 경우를 제거하여 출력해야 한다.
'SQL 문제 풀이' 카테고리의 다른 글
[프로그래머스 Level 4] 우유와 요거트가 담긴 장바구니 (0) 2024.01.25 [LeetCode Hard] 601. Human Traffic of Stadium (0) 2024.01.16 [LeetCode Hard] 185. Department Top Three Salaries (2) 2024.01.07 [LeetCode Medium] 550. Game Play Analysis IV (0) 2024.01.05 [프로그래머스 Level 4] 입양 시각 구하기 (2) (0) 2024.01.04