728x90
반응형
- Mysql과 Mariadb에서 실험
- ROW_NUMBER() : 설정에 따른 순서 반환(중복 상관 X)
- DENSE_RANK() : 설정에 따른 순서 반환(중복 순위 존재 상관없이 다음값 반환)
- RANK() : 설정에 따른 순서 반환(중복 순위 존재 시 해당 단계 건너띄고 다음값 반환)
- 옵션) OVER([PARTITION BY {그룹핑할 컬럼}] [ORDER BY {정렬할 컬럼}])
(PARTITION BY 없이 ORDER BY 단독 사용 가능)
- 예)
SELECT T.NUM
, ROW_NUMBER() OVER (ORDER BY T.NUM) AS ROW_NUMBER
, DENSE_RANK() OVER (ORDER BY T.NUM) AS DENSE_RANK
, RANK() OVER (ORDER BY T.NUM) AS RANK
FROM(SELECT 0 AS NUM FROM DUAL UNION ALL
SELECT 2 AS NUM FROM DUAL UNION ALL
SELECT 3 AS NUM FROM DUAL UNION ALL
SELECT 4 AS NUM FROM DUAL UNION ALL
SELECT 5 AS NUM FROM DUAL UNION ALL
SELECT 5 AS NUM FROM DUAL UNION ALL
SELECT 6 AS NUM FROM DUAL UNION ALL
SELECT 8 AS NUM FROM DUAL UNION ALL
SELECT 8 AS NUM FROM DUAL UNION ALL
SELECT 8 AS NUM FROM DUAL
) AS T
- ROW_NUMBER는 1부터 차례로 출력
- DENSE_RANK는 중복(5가 2번)이 존재 할 경우 다음 번호(6)가 밀리지 않음
- RANK는 중복(5가 2번)이 존재 할 경우 다음 번호(6이 아닌 7)가 밀림,
(5가 3번 존재 할 경우 8이 온다)
728x90
반응형
'Study > DB' 카테고리의 다른 글
DB - UNION과 UNION ALL (0) | 2021.01.15 |
---|---|
DB - EXISTS 와 IN (0) | 2021.01.15 |
MYSQL - LIKE와 IN을 함께 사용하기 (0) | 2021.01.15 |
MYSQL - 비밀번호가 다르다고 할 경우 해결방법 (0) | 2021.01.15 |
MYSQL - my.ini 위치 (0) | 2021.01.15 |
댓글