오랑우탄의 반란
LeetCode 리트코드 | 1341. Movie Rating (MySQL) 본문
반응형
오늘도 오랑이는 문제를 풉니다.
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/
반응형
'SQL > LeetCode' 카테고리의 다른 글
LeetCode 리트코드 | 602. Friend Requests II: Who Has the Most Friends (MySQL) (0) | 2024.08.07 |
---|---|
LeetCode 리트코드 | 1321. Restaurant Growth (MySQL) (0) | 2024.08.05 |
LeetCode 리트코드 | 626. Exchange Seats (MySQL) CASE, LAG/LEAD, ROW_NUMBER (0) | 2024.08.01 |
LeetCode 리트코드 | 1907. Count Salary Categories (MySQL) Union (0) | 2024.07.23 |
LeetCode 리트코드 | 1204. Last Person to Fit in the Bus (MySQL) 윈도우 함수 (0) | 2024.07.23 |