[내일배움캠프-사전캠프 03일차] MySQL 랭킹(Ranking) 함수들

2025. 6. 11. 14:35·백엔드 부트캠프[사전캠프]/TIL
SQL에 대한 기본 지식은 갖췄다고 생각했으나 애매했던 부분에 대해서만 정리했습니다.

 

 

MySQL에서 랭킹(Ranking) 함수들은 데이터를 정렬된 순서에 따라 순위를 부여할 때 사용하는 윈도우 함수(Window Function)이다.

 

대표적인 함수로는 다음 세 가지가 있다.


✅ 1. RANK()

  • 같은 값에는 같은 순위를 부여하고, 그 다음 순위는 건너뛴다. (즉, 중복 순위 발생 시 건너뜀).
  • 예시:
SELECT name, score, 
	   RANK() OVER (ORDER BY score DESC) AS ranking 
FROM students;
name score ranking
A 100 1
B 100 1
C 90 3

 

 


✅ 2. DENSE_RANK()

  • RANK()와 비슷하지만 순위가 건너뛰지 않는다.
  • 예시:
SELECT name, score, 
       DENSE_RANK() OVER (ORDER BY score DESC) AS ranking 
FROM students;
name score ranking
A 100 1
B 100 1
C 90 2

 

 


✅ 3. ROW_NUMBER()

  • 모든 행에 고유한 순위를 부여합니다 (중복 없음).
  • 동일한 값이 있어도 순위는 고유하게 올라간다. 즉, 정렬된 순서대로 순위를 부여한다.
  • 예시:
SELECT name, score, 
	   ROW_NUMBER() OVER (ORDER BY score DESC) AS ranking 
FROM students;
name score ranking
A 100 1
B 100 2
C 90 3

 

 

 


🔧 추가 설명

  • OVER 절 안에는 다음을 포함할 수 있다:
    • PARTITION BY: 그룹별로 순위 매김
    • ORDER BY: 정렬 기준 지정
  • 예시: 학급별 점수 순위
id name class score
1 Alice A 90
2 Bob A 95
3 Carol A 90
4 Dave B 85
5 Erin B 90
6 Frank B 80
SELECT
        class,
        name,
        score,
        RANK() OVER (PARTITION BY class ORDER BY score DESC) AS class_rank
FROM students;

 

결과:

class name score class_rank
A Bob 95 1
A Alice 90 2
A Carol 90 2
B Erin 90 1
B Dave 85 2
B Frank 80 3

 


📌 요약 비교

함수 중복 순위 허용 순위 건너뜀 유일한 순위
RANK() ✅ ✅ ❌
DENSE_RANK() ✅ ❌ ❌
ROW_NUMBER() ❌ ❌ ✅

 

 
 
 
 
'백엔드 부트캠프[사전캠프]/TIL' 카테고리의 다른 글
  • [내일배움캠프-사전캠프 04일차] SQL로 Pivot Table 만들어보기
  • [내일배움캠프-사전캠프 04일차] IFNULL vs COALESCE
  • [내일배움캠프-사전캠프 02일차] DATEDIFF vs TIMESTAMPDIFF
  • [내일배움캠프-사전캠프 02일차] SQL 기초-2
s_y_130
s_y_130
  • s_y_130
    About SY
    s_y_130
  • 전체
    오늘
    어제
    • 분류 전체보기 (432) N
      • JAVA (54)
        • 더 자바 8 (0)
        • JAVA (41)
        • JAVA (JVM) (13)
      • Computer Science (86)
        • CS Basic (7)
        • OOP (11)
        • Design Pattern (16)
        • Network (8)
        • HTTP (6)
        • WEB (22)
        • OS (16)
      • DataBase (29)
        • DB theory (15)
        • MySQL (14)
        • Redis (0)
      • Collection Framework (1)
        • 구현 (1)
      • Data Structure (14)
        • Linear (9)
        • Non-Linear (5)
      • Algorithm (19)
        • Basic (12)
        • 응용 (2)
        • 완전 탐색(Brute Force) (1)
        • 다익스트라 (1)
        • Algorithm Problem (3)
      • Spring (104)
        • 스프링 핵심 원리 - 기본편 (9)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 (11)
        • 스프링 DB 1편 - 데이터 접근 핵심 원리 (6)
        • 스프링 DB 2편 - 데이터 접근 활용 기술 (10)
        • 스프링 핵심 원리 - 고급편 (13)
        • 스프링 부트 - 핵심 원리와 활용 (9)
        • Spring Security 6.x (2)
        • Spring Batch (2)
        • Spring Cloud로 개발하는 MSA (1)
        • 재고시스템으로 알아보는 동시성이슈 해결방법 (4)
        • 개념 (27)
        • 테스트 (0)
        • Annotation (1)
        • Error Log (2)
      • TEST (0)
        • 부하 테스트 (0)
        • Practical Testing: 실용적인 테스트.. (0)
      • JPA (40)
        • 자바 ORM 표준 JPA 프로그래밍 (12)
        • 1편- 실전! 스프링 부트와 JPA 활용 (7)
        • 2편- 실전! 스프링 부트와 JPA 활용 (4)
        • 실전! 스프링 데이터 JPA (6)
        • 실전! Querydsl (6)
        • 개념 (5)
      • 백엔드 부트캠프[사전캠프] (35)
        • TIL (12)
        • 문제풀이 (23)
      • 백엔드 부트캠프 (1) N
        • Calculator (1) N
      • Open Source (0)
      • Book Study (1)
        • Morden Java in Action (1)
        • Real MySQL 8.0 Vol.1 (0)
        • TDD : By Example (0)
      • AWS (0)
        • EC2 (0)
      • git (2)
      • AI (22)
        • Machine Learning (17)
        • Deep Learning (0)
        • TensorFlow (1)
        • PyTorch (1)
        • YOLO (1)
        • Data Analysis (0)
        • Ai code Error (1)
        • Numpy (1)
      • MY (0)
      • WEB (15)
        • Django (3)
        • WEB 개념 (1)
        • React (1)
        • Maven (10)
      • Python (6)
      • 기초수학 (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_y_130
[내일배움캠프-사전캠프 03일차] MySQL 랭킹(Ranking) 함수들
상단으로

티스토리툴바