1. ROW_NUMBER()
일반적인 넘버링.
기준 컬럼(ORDER BY 다음에 오는 컬럼)의 값이 같은 값이라도 다른 행이면 다른 넘버를 주므로
넘버링 시 중복되는 숫자가 없다.
행 | RNUM | 기준 컬럼명 |
1 | 1 | 바나나 |
2 | 2 | 사과 |
3 | 3 | 사과 |
4 | 4 | 딸기 |
SELECT ROW_NUMBER() OVER (ORDER BY 컬럼명1, 컬럼명2, ...) AS RNUM, *
FROM 테이블명;
2. RANK()
기준 컬럼의 값이 겹칠 경우 같은 넘버를 주고,
겹치지 않으면 해당 행의 넘버를 줌.
예를 들어 같은 값이 두 개고 다음 레코드의 값이 다르면 이 레코드는 넘버 4.
행 | RNUM | 기준 컬럼명 |
1 | 1 | 바나나 |
2 | 2 | 사과 |
3 | 2 | 사과 |
4 | 4 | 딸기 |
SELECT RANK() OVER (ORDER BY 컬럼명) AS RNUM, *
FROM 테이블명;
3. DENSE_RANK()
기준 컬럼의 값이 겹칠 경우 같은 넘버를 주고,
겹치지 않으면 그 다음 넘버를 줌.
예를 들어 같은 값이 두 개고 다음 레코드의 값이 다르면 이 레코드는 넘버 3.
행 | RNUM | 기준 컬럼명 |
1 | 1 | 바나나 |
2 | 2 | 사과 |
3 | 사과 | |
4 | 3 | 딸기 |
마이플랫폼에서 suppress로 컬럼끼리 같은 값을 붙이고 싶을 때 사용.
이 때 없는 숫자가 있으면 안 되므로 RANK()가 아닌 DENSE_RANK()를 쓴다.
SELECT DENSE_RANK() OVER (ORDER BY 컬럼명2) AS RNUM, *
FROM 테이블명;
'SQL' 카테고리의 다른 글
[SQLGate 오류] CREATE DATABASE가 실패했습니다. 나열된 일부 파일 이름을 만들 수 없습니다. (0) | 2020.03.23 |
---|---|
[SQL] 페이징하기 : 페이지마다 특정 개수의 글목록 불러오는 쿼리 (0) | 2020.03.18 |
[DB Query] SELECT 결과에 따라 조건문 바꾸기 (0) | 2020.03.03 |
[SQL] decode() 함수 (0) | 2020.02.14 |
쿼리문 하나에서 두 개의 COUNT 조회하기 (0) | 2020.01.29 |
댓글