728x90
앞에는 간단했는데
점점 쉽지 않아 지는;;
1. RANK()
SELECT
column1,
column2,
RANK() OVER ([PARTITION BY column1] ORDER BY column1 [ASC|DESC]) AS column1_rank
FROM table_name;
PARITION BY:
ranking by the column value
- 꼭 안 적어도 되는 필드임
- 만약 일정한 값에 따른 순서를 내고 싶다면 쓰면 되는 것
ORDER BY:
- 꼭 적어야 함.
- 그래야 순서가 나옴
AS:
column 이름을 새로 붙여주기 위해서
얜 값이 같으면 rank 번호를 똑같이 주고
대신 다음번에 번호를 스킵함
예)
1, 1, 3..
(1등이 2개라 그다음은 3등)
728x90
2. DESNE_RANK()
SELECT
column1, column2
DENSE_RANK() OVER (ORDER BY column1 ASC) AS rank
FROM table_name;
쓰는 건 아까 랭크하고 같은데
얜 다음 번호 스킵 없음
예)
1, 2, 2, 3...
(2등이 2개가 있어도 그다음에 오는 건 3!)
3. ROW_NUMBER()
SELECT
column1,
column2,
ROW_NUMBER() OVER (ORDER BY column1 DESC) AS row_num
FROM table_name;
얜 같은 값이던 뭐건 상관없음
무조건 그냥 줄 번호를 부여함.
예)
1, 2, 3, 4,...
(2와 3이 같은 값을 가졌어도)
개인적인 공부용 노트이므로
다들 그냥 적당히 참고만 하세유
728x90