728x90

데이터를 좀 뽑을 일이 있어서 쿼리를 짜는 와중에, 자연스럽게  ROW_NUMBER 함수를 썻다가 Syntax Error 가 나는 것을 보고 ?를 띄우며 당황스러움을 감추지 못했다.

 

SELECT t.*
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY week_num, ranking_type ORDER BY score DESC) AS rn
  FROM (
    SELECT *,
           YEAR(created_at) AS year_num,
           WEEK(created_at) AS week_num
    FROM your_table_name
    WHERE YEAR(created_at) = 2022
  ) AS subquery
) AS t
WHERE t.rn <= 3
ORDER BY t.week_num, t.ranking_type, t.score DESC;

 

그래서 이런 ROW_NUMBER 함수는 변환해서 써줘야 하는데, 

이런 경우에는 JOIN 이 매우매우 좋다.

 

따라서  JOIN 으로 뿌셔버리고 해당 부분에 대한 문제를 해결해줫다.

 


물론 번외로 MySQL 8.0 에서는 지원이 된다고 하니 버전업을 읏샤읏샤 해버리고 싶다만은.. 그게 그렇게 간단한 일이 아니잖아?

+ Recent posts