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 에서는 지원이 된다고 하니 버전업을 읏샤읏샤 해버리고 싶다만은.. 그게 그렇게 간단한 일이 아니잖아?
'DB' 카테고리의 다른 글
VARCHAR vs TEXT (1) | 2024.09.10 |
---|---|
[MySQL] MySQL High Availability - Replication Database (0) | 2021.07.25 |
How to replace & to & in SQL? (0) | 2019.07.16 |
[MySQL] 레코드 데이터 치환하기 (REPLACE) (0) | 2019.05.07 |
innodb 설치 및 옵션 (0) | 2018.05.17 |