SQL/SQL문풀

[MY SQL] 영화를 가장 많이 본 사람과 평점이 가장 높은 영화 찾기

data_2080 2025. 2. 5. 21:49
728x90

출처: [leetcode - SQL50] :  1341. Movie Rating

문제:  동일한 횟수나 평점이 나온 경우 이름을 기준으로 오름차순하여 1개 만 선택


ORDER BY로 정렬하여 찾기

1) 동점이 나올 경우 유저 이름 순으로 1순위를 선택하므로, 유저이름이 있는 users테이블과 movierating테이블을 join
2) name으로 group by하여 이름이 나온 횟수 = 영화를 본 횟수를 count하여 내림차순, 이름순으로 오름차순
3) LIMIT1으로 가장 횟수가 큰 유저의 이름을 선택
4) 동일한 방식으로 평점이 가장 높은 영화 이름을 선택5) 이름에 대한 별칭을 results 동일하게 주고 UNION ALL로 통합하여 결과 출력  

(SELECT name AS results
FROM MovieRating 
JOIN Users USING(user_id)
GROUP BY name
ORDER BY COUNT(*) DESC, name
LIMIT 1)

UNION ALL

(SELECT title AS results
FROM MovieRating 
JOIN Movies USING(movie_id)
WHERE EXTRACT(YEAR_MONTH FROM created_at) = 202002
GROUP BY title
ORDER BY AVG(rating) DESC, title
LIMIT 1);
728x90