
제가 왔어요오..~~
제 답 쿼리입니다.
(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 등 여러가지 형태로 입력이 가능합니다.