Oracle RANK 및 DENSE_RANK 함수는 SQL 쿼리에서 데이터를 분석하고, 데이터 집합 내의 각 행의 순위를 계산하는 데 사용됩니다. 이 함수들은 ORDER BY 구문과 함께 OVER 구문을 사용하여 쿼리 내에서 정렬 및 분류를 수행합니다. PARTITION BY 절을 사용하여 데이터를 파티션화하고, 그룹별로 순위를 계산할 수 있습니다.
이 글에서는 Oracle RANK 및 DENSE_RANK 함수의 사용 방법에 대해 자세히 알아보겠습니다. RANK 및 DENSE_RANK 함수를 사용하여 데이터를 정렬하고, 순위를 계산하는 방법과 함께, OVER 및 PARTITION BY 구문의 사용 방법에 대해서도 다룰 것입니다.
1. RANK 함수
데이터 집합 내에서 순위를 계산하고, 동일한 값이 있으면 같은 순위를 부여합니다. 예를 들어, 1위, 2위, 2위, 4위와 같이 중복된 순위를 가질 수 있습니다.
사용방법
-- RANK 함수 사용 방법
SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank
FROM scores;
2. DENSE_RANK 함수
데이터 집합 내에서 순위를 계산하고, 동일한 값이 있으면 다음 순위를 건너뜁니다. 예를 들어, 1위, 2위, 2위, 3위와 같이 중복된 순위가 있으면, DENSE_RANK 함수는 1위, 2위, 2위, 3위와 같은 결과를 반환합니다.
사용방법
-- DENSE_RANK 함수 사용 방법
SELECT name, score, DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
FROM scores;
3. PARTITION BY
PARTITION BY 절을 사용하여 데이터를 파티션화하여 그룹별로 순위를 계산할 수도 있습니다. 예를 들어, 팀별로 순위를 계산하려면 다음과 같은 쿼리를 사용할 수 있습니다.
사용방법
-- PARTITION BY 절 사용 방법
SELECT team, name, score, RANK() OVER (PARTITION BY team ORDER BY score DESC) AS rank
FROM scores;
위의 예시에서, scores 테이블에서 team, name, score 열을 선택하고, RANK 함수를 사용하여 각 팀의 선수들의 score에 대한 순위를 계산합니다. PARTITION BY 구문을 사용하여 team 열을 기준으로 데이터를 파티션화하며, ORDER BY 구문을 사용하여 score 열을 내림차순으로 정렬합니다.
'코딩 > Oracle' 카테고리의 다른 글
[Oracle] 문자함수 LENGTH, LENGTHB 문자열 길이 구하기 (0) | 2020.01.04 |
---|---|
Oracle sql View 뷰 생성 및 삭제 (0) | 2019.12.19 |
오라클 sql 특정 컬럼 1씩 증가 쿼리 (0) | 2019.11.06 |
오라클 sql 오라클 에러의 모든것 오라클 데이터베이스 에러 ORA- (1) | 2019.10.07 |
오라클 sql ORA-02253 : CONSTRAINT SPECIFICATION NOT ALLOWED (제약을 지정할 수 없습니다.) (0) | 2019.10.07 |