카테고리 없음

SQL #3. RANK(), DENSE_RANK(), ROW_NUMBER()

꼬마 일개미 2024. 12. 21. 11:45
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