Movies
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| movie_id | int |
| title | varchar |
+---------------+---------+
movie_id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
title은 영화의 이름입니다.
Table: Users
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| user_id | int |
| name | varchar |
+---------------+---------+
user_id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
'name' 열에는 고유한 값이 있습니다.
Table: MovieRating
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| movie_id | int |
| user_id | int |
| rating | int |
| created_at | date |
+---------------+---------+
(movie_id, user_id)는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블에는 사용자가 리뷰에 남긴 영화의 평점이 포함되어 있습니다.
created_at는 사용자의 리뷰 날짜입니다.
가장 많은 수의 영화에 별점을 준 사용자의 이름을 찾습니다. 동점인 경우 사전적으로 더 작은 사용자 이름을 반환합니다.
2020년 2월에 평균 평점이 가장 높은 영화 이름을 찾습니다. 동점일 경우 사전적으로 더 작은 영화 이름을 반환합니다.
with tmp_tb1 as ( select B.name as results , count(A.user_id) as not_use_col from MovieRating A join Users B on A.user_id = B.user_id group by B.name order by not_use_col desc, B.name asc limit 1 ), tmp_tb2 as ( select A.title as results ,avg(B.rating) as not_use_col from Movies A join MovieRating B on A.movie_id = B.movie_id where DATE_FORMAT(B.created_at, '%Y-%m') = '2020-02' group by A.movie_id order by not_use_col desc, A.title asc limit 1 ) select results from tmp_tb1 -- 가장 많은 수의 영화에 별점을 준 사용자 union all select results from tmp_tb2 -- 2020년 2월에 평균 평점이 가장 높은 영화 이름 ;
https://leetcode.com/problems/movie-rating/description/?envType=study-plan-v2&envId=top-sql-50