오랑우탄의 반란

LeetCode 리트코드 | 1341. Movie Rating (MySQL) 본문

SQL/LeetCode

LeetCode 리트코드 | 1341. Movie Rating (MySQL)

5&2 2024. 8. 2. 09:47
반응형

오늘도 오랑이는 문제를 풉니다.

 

1341. Movie Rating

 

풀이 과정

두 조건에 대해 결과물을 출력해서 union 으로 연결해주는 문제입니다.

첫번째 조건에 대해 MovieRating 과 Users 테이블을 조인해서 user_id 기준으로 그룹해 rating 의 개수에 대한 max를 구하는 것을 생각했었는데 쿼리를 실행해보니 오류가 뜨더군요.

 

다른 풀이를 참고했더니 더 간단한 방법으로 name 기준으로 group해서 rating 개수와 name 기준 정렬해서 맨 위의 결과 하나만 추출하면 조건에서 '동순위일 경우 알파벳순으로 먼저 오는 이름 출력'에 대한 조건을 자동으로 충족하게 됩니다.  

select name as results 
from movierating join users using(user_id)
group by name
order by count(*) desc, name 
limit 1

 

마찬가지로 두번째 조건도 비슷하게 설계해줍니다.

여기서 created_at은 날짜형식이지만 그게 아니어도 사용 가능한 substr으로 안전하게 갑니다. 

select title as results
from movierating join movies using(movie_id)
where substr(created_at,1,7) = '2020-02'
group by title
order by avg(rating) desc, title
limit 1

 

이제 두 결과를 하나의 칼럼이 되도록 이어주면 끝입니다.

 

 

최종 코드

(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 substr(created_at,1,7) = '2020-02'
group by title
order by avg(rating) desc, title
limit 1)

 

 


 

오랑우탄이 영어를 하고 오랑이가 쿼리마스터가 되는 그날까지~

 

https://leetcode.com/problems/movie-rating/description/

 

 

 

반응형