본문 바로가기
Study/DB

DB - SELECT 시 순위 출력

by 멘탈은안녕하신가 2021. 1. 15.
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 온다)

 

참조1 : https://sites.google.com/site/smcgbu/home/gongbu-iyagi/rankdenserankrownumbersun-wileulbanhwanhaneunhamsu

참조2 : https://ahrang.tistory.com/10

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

댓글