Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- CSS
- html
- 오류
- Java
- spring
- javascript
- sql
- jQuery
- Ajax
- was
- web.xml
- eGovFramework
- 개념
- jsp
- JVM
- select
- 과정평가형
- input
- 태그
- eGov
- 정의
- mybatis
- TO_DATE
- Oracle
- POI
- array
- controller
- 암호화
- json
- 함수
Archives
- Today
- Total
web developer
[sql] RANK, DENSE_RANK, ROW_NUMBER 함수 본문
728x90
728x90
(1) RANK 함수
RANK 함수는 중복 값들에 대해서 동일한 순위로 표시하고,
중복 순위 다음 값에 대해서는 중복 개수만큼 건너뛰고, 중복순위 + 중복값 개수의 순위로 출력하는 함수입니다.
SELECT EMPNO, EMPNAME, SALARY,
RANK() OVER (ORDER BY SALARY DESC) AS RANK
FROM EMPLOYEE;
EMPNO EMPNAME SALARY RANK
----------- ------------ ---------- --------
494 손흥민 1000 1
495 박지성 900 2
493 차범근 800 3
496 정우영 700 4
492 황희찬 500 5
495 이강인 500 5
496 이승우 400 7
493 송범근 300 8
492 조현우 250 9
(2) DENSE_RANK
DENSE_RANK 함수는 중복 값들에 대해서 동일한 순위로 표시하고,
중복 순위 다음 값에 대해서는 중복 값 개수와 상관없이 순차적인 순위 값을 출력하도록 하는 함수 입니다.
SELECT EMPNO, EMPNAME, SALARY,
DENSE_RANK() OVER (ORDER BY SALARY DESC) AS DENSE_RANK
FROM EMPLOYEE;
EMPNO EMPNAME SALARY DENSE_RANK
----------- ------------ ---------- -----------
494 손흥민 1000 1
495 박지성 900 2
493 차범근 800 3
496 정우영 700 4
492 황희찬 500 5
495 이강인 500 5
496 이승우 400 6
493 송범근 300 7
492 조현우 250 8
(3) ROW_NUMBER
ROW_NUMBER 함수는 중복 값들에 대해서도 순차적인 순위를 표시하도록 출력하는 함수 입니다.
SELECT EMPNO, EMPNAME, SALARY,
ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS ROW_NUMBER
FROM EMPLOYEE;
EMPNO EMPNAME SALARY ROW_NUMBER
----------- ------------ ---------- -----------
494 손흥민 1000 1
495 박지성 900 2
493 차범근 800 3
496 정우영 700 4
492 황희찬 500 5
495 이강인 500 6
496 이승우 400 7
493 송범근 300 8
492 조현우 250 9
RANK 함수
- 중복되는 등수 존재
- 중복 다음 값은 중복순위 + 중복값 개수
DENSE_RANK 함수
- 중복되는 등수 존재
- 중복 다음 값은 중복순위 + 1
ROW_NUMBER 함수
- 중복되는 등수 없음
Window함수는 다음과 같습니다.
https://take-it-into-account.tistory.com/23
[SQLD] window 함수
[1] WINDOW 집계 함수 @ WINDOW 함수(컬럼명) SUM, MAX, MIN, AVG, COUNT @ 윈도우 함수 지정 범위 - 행을 분할 : PARTITION BY (GROUP BY와 같은 역할) - 행을 정렬 : ORDER BY (ORDER BY 역할) - 행을 지정 : ROWS 또는 RANGE (WHER
take-it-into-account.tistory.com
728x90
728x90
'SQL > Oracle SQL' 카테고리의 다른 글
[sql/oracle] TO_DATE, TO_CHAR 비교 / 오류 원인(ORA-10858, ORA-01481) (0) | 2022.03.04 |
---|---|
[sql] JOIN 정리 (0) | 2022.01.12 |
[sql] DECODE 함수 (0) | 2022.01.10 |
[sql] INSTR 함수 (0) | 2022.01.07 |
[sql] SUBSTR 함수 (0) | 2022.01.07 |