[윈도우 함수]- 순위(RANK) 함수

2025. 7. 17. 16:17·코딩 테스트/02. SQL

1. 윈도우 함수란?

: 원래 테이블의 모든 행을 유지하면서, 계산 결과를 '새로운 열'로 붙이는 것

  • OVER 라는 키워드와 함께 사용
  • 비교, 분석, 순위 계산 등을 동시에 할 수 있다

2. 윈도우 함수의 종류

함수 종류 대표 함수
순위(RANK)  RANK(), DENSE_RANK(), ROW_NUMBER()
이전/다음 값 참조 LAG(), LEAD()
특정값 추출  FIRST_VALUE(), LAST_VALUE()
범위 지정 키워드 ROWS BETTWEEN [시작범위] AND [끝범위]
비율 NTILE(n), CUME_DIST(), PERCENT_RANK(),RATIO_TO_REPORT()

 

3. 순위 함수 종류

ROW_NUMBER() 무조건 1, 2, 3... 고유한 순번 부여
RANK() 같은 값이면 같은 순위, 다음 순위는 건너뜀
DENSE_RANK() 같은 값이면 같은 순위, 다음 순위는 안 건너뜀
NTILE(n) 데이터를 n개 구간으로 나눠서 1~n번 구간 부여

1. ROW_NUMBER()

그냥 순서대로 번호 부여 (중복 점수 상관 없음)

SELECT 이름, 점수, 
	ROW_NUMBER() OVER (ORDER BY 점수 DESC) AS 순번 
FROM 학생;

이름 점수 순번
민수 95 1
철수 90 2
영희 90 3
지수 85 4
 

2. RANK()

같은 점수는 같은 순위, 다음 순위는 건너뜀

SELECT 이름, 점수, 
	RANK() OVER (ORDER BY 점수 DESC) AS 순위 
FROM 학생;

 

이름 점수 순위
민수 95 1
철수 90 2
영희 90 2
지수 85 4
 

3. DENSE_RANK()

같은 점수는 같은 순위, 다음 순위는 연속적으로 부여

SELECT 이름, 점수, 
	DENSE_RANK() OVER (ORDER BY 점수 DESC) AS 순위 
FROM 학생;

이름 점수 순위
민수 95 1
철수 90 2
영희 90 2
지수 85 3

4. NTILE(n)

데이터를 n등분해서 몇 분위에 속하는지 알려줌 (예: 상위 25%, 하위 25% 나누기)

SELECT 이름, 점수, 
       NTILE(2) OVER (ORDER BY 점수 DESC) AS 분위 
FROM 학생;
이름 점수 분위
민수 95 1
철수 90 1
영희 90 2
지수 85 2

 

'코딩 테스트 > 02. SQL' 카테고리의 다른 글

[프로그래머스] SQL 쿼리테스트 Lv3(2)  (2) 2025.07.29
[프로그래머스]SQL 쿼리테스트 Lv3(1)  (5) 2025.07.28
[프로그래머스] SQL 쿼리테스트 Lv2(5)  (3) 2025.07.17
[프로그래머스]SQL 쿼리 테스트 Lv2(4)  (7) 2025.07.16
[프로그래머스] SQL 쿼리테스트 Lv2 (3)  (4) 2025.07.16
'코딩 테스트/02. SQL' 카테고리의 다른 글
  • [프로그래머스] SQL 쿼리테스트 Lv3(2)
  • [프로그래머스]SQL 쿼리테스트 Lv3(1)
  • [프로그래머스] SQL 쿼리테스트 Lv2(5)
  • [프로그래머스]SQL 쿼리 테스트 Lv2(4)
Growth DA Log
Growth DA Log
Growth DA Log 님의 블로그 입니다.
  • Growth DA Log
    Growth DA Log님의 블로그
    Growth DA Log
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • TIS_COMPANY (6)
      • 코딩 테스트 (61)
        • 01. Python (3)
        • 02. SQL (58)
      • 데이터 분석 (53)
        • 01. BigQuery (9)
        • 02. GA4 (1)
        • 02-1. GA4를 더 잘 다루기 위한 마케팅 개.. (5)
        • 03. streamlit (5)
        • 04. Git (12)
        • 05. 데이터 엔지니어링 (3)
        • 06. 데이터 모델링 (11)
        • 07. Excel (0)
        • 08. Tableau (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    solvesql
    이행성
    tableau
    cross_join
    tableaubootcamp
    코테
    AARRR
    코드잇스프린트후기
    윈도우함수
    프로그래머스
    git
    streamlit
    DENSE_RANK
    rank
    ROW_NUMBER
    코딩테스트
    revert
    쿼리테스트
    Reset
    SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
[윈도우 함수]- 순위(RANK) 함수
상단으로

티스토리툴바