1341. Movie Rating(LeetCode)

minllny·2024년 5월 10일


제가 왔어요오..~~

제 답 쿼리입니다.

(SELECT name results
FROM (
    SELECT U.name
        , COUNT(*) count
    FROM MovieRating MR
        JOIN Users U ON MR.user_id = U.user_id
    GROUP BY U.user_id
    ORDER BY count DESC, U.name
) AS T1
LIMIT 1)

UNION ALL

(SELECT title results
FROM (
    SELECT M.title
        , AVG(rating) avg_rating
    FROM MovieRating MR
        JOIN Movies M ON MR.movie_id = M.movie_id
    WHERE created_at BETWEEN '2020-02-01' AND '2020-02-29'
    GROUP BY M.movie_id
    ORDER BY avg_rating DESC, M.title
) AS T2
LIMIT 1)

이거 .. 괜찮은 건가요..
다른 사람의 쿼리도 살펴보아요 !



# Write your MySQL query statement below
(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);

대박!! 심플 is best~
오오.. ORDER BY에 집계함수가 가능하군요
저는 그것도 모르고 서브쿼리를 왕창 썼습니다 ㅎ
항상 제 쿼리는 길어져서 마음에 들지않았는데 이렇게 또 얻어가네요!

또 JOIN을 할때 조건문으로 저는 ON을 사용하였지만
각 테이블의 컬럼명의 같을 경우 USING을 쓸 수 있네요 !!! 😮😮😮

마지막으로


EXTRACT(unit FROM date)

날짜에서 년, 월, 일, 시간 등을 추출

unit에는 SECOND, MINUTE, HOUR, YEAR_MONTH, DAY_HOUR 등 여러가지 형태로 입력이 가능합니다.

profile
SQL 끄적끄적

0개의 댓글