데이터베이스에서 가져온 데이터들의 순위를 매겨야 할 때,
Mysql 버전이 8
이상이라면 Rank()
함수를 사용 가능하다.
Rank()
함수는 아주아주 편리하다. 내부 order by
가 들어가야한다는 것과, 같은 순위를 가질 때 다음 데이터는 직전 순위를 뛰어넘고 그 다음 순위를 가진다
는 특징이 있다. (ex. 1등 2명, 2등 X, 3등 1명)
select rank() over (order by [순위기준] desc) as 'rank' from [TABLE];
위의 쿼리처럼 사용하면 된다.
데이터를 이미 한번 걸렀다고 해도 방식은 동일하다.
서브쿼리로 진행하면 된다.
월별 데이터들을 1차로 정리하고, 그 월별데이터들의 순위를 매겨야 할 때 아래처럼 진행하면 된다.
SELECT 월, 결과, RANK() over (ORDER BY 결과 DESC) AS 순위
FROM (
[서브쿼리]
) AS resultSelect // `AS` 지정해줘야 에러 안남.
GROUP BY 월;
// `GROUP BY` 를 `월` 로 지정해줘야 월은 순서대로 순위는 그에 맞게 나온다.