KoB
뭐라도 하자 😎
KoB
📬 kingbj0429@gmail.com
와주신 분들 🙇‍♂️
337,731
오늘
59
어제
1,006
  • 지식 공유 📚 (183)
    • Develop (0)
    • DevOps (3)
      • Kubernetes (3)
    • AWS (4)
      • EC2 (1)
      • EKS (0)
      • S3 (1)
      • EFS (1)
      • Route53 (1)
    • Network (0)
    • 트러블 빵야 (1)
    • 겉핥기 시리즈 (2)
    • ... (173)

최근 댓글

  • 넵 감사합니다 :)
    KoB
  • 안녕하세요 웹 개발중인데 매우 잘 봤습니다. 혹시 제 블로⋯
    DeanLee9
  • 감사합니다 :)
    KoB
  • 글을 쉽고 자세하게 써주셔서 이해가 쏙쏙 되는 것 같아요!⋯
    지원.
  • 감사합니다 :) 재밌을 때가 좋은거 같아요 ㅋㅋㅋㅋㅋ
    KoB

티스토리

Design by hELLO ·
KoB

뭐라도 하자 😎

[Oracle] 조회 순번 매기기 ROW_NUMBER()
...

[Oracle] 조회 순번 매기기 ROW_NUMBER()

2021. 1. 26. 10:11
반응형

오라클에서 페이징 처리 등을 할때 로우의 순번을 매긴 뒤 정렬을 해줘야 합니다.

이때 ROW_NUMBER() 을 사용하면 쉽게 순번을 매길수 있습니다.

 


# 예제 코드

 

단순 SELECT 쿼리문

 

예제 테이블에서 단순 SELECT 쿼리문했을 때 위와 같은 로우를 보여줍니다.

 

그리고 저 테이블의 로우를 날짜(REGIST_DT)로 정렬하고 싶습니다.

ORDER BY를 사용하여 정렬 할 수 있겠지만 이렇게만 하면 분명 한계가 존재합니다.

 

페이징 처리를 해야한다고 가정해봅시다. 1, 2, .. 페이지 등이 존재할 것이고, 한 페이지에는 10개의 로우를 보여주고 로우는 날짜를 기준으로 뷰에 뿌려진다고 합시다.

 

만약 ORDER BY만 사용한다면 1페이지에는 문제 없이 로우값을 뿌릴수 있겠지만, 문제는 2페이지부터 입니다.

2페이지에서 11번째부터 20번째까지의 로우(1번~10번 페이지는 제외하고)를 가져와야 하는데 이는 쉽지 않습니다.

 

이때 바로 ROW_NUMBER()을 이용하여 조회 순번을 정해주는 것입니다.

 

SELECT 
      SEQ
    , TITLE
    , TO_CHAR(REGIST_DT, 'YYYY-MM-DD HH24:MI') AS REGIST_DT
    , ROW_NUMBER() OVER( ORDER BY REGIST_DT DESC) AS rnum
    FROM TEMP_TABLE
    WHERE 1=1

 

쿼리문 결과

 


# 응용 예제

 

SELECT
    A.*   
  FROM 
    (    
    SELECT                         
      BANNER_SN AS seq
     , BANNER_SJ AS TITLE
     , TO_CHAR(REGIST_DT, 'YYYY-MM-DD HH24:MI') AS REGIST_DT
     , ROW_NUMBER() OVER( ORDER BY REGIST_DT DESC) AS rnum
    FROM BANNER
    ) A
  WHERE A.rnum > 4 AND A.rnum < 8

 

결과

 

단순 ORDER BY를 했을 경우 위와 같이 특정 번호의 ROW를 가져오기가 상당히 번거롭습니다. 따라서 ROW_NUMBER()을 이용하여 매긴 순번에 대해 정렬 해놓으면 어느 ROW 든 가져오기가 쉽습니다.

 

 

읽어주셔서 감사합니다.

질문은 언제나 환영합니다.

 

"난 반드시 백엔드 왕이 될거야"

반응형

'...' 카테고리의 다른 글

[Oracle] COUNT() 집계함수 사용하기  (0) 2021.02.01
[Oracle] Listener refused the connection with the following error  (0) 2021.01.26
[CA] 동기(Blocking)와 비동기(Non-Blocking)  (2) 2021.01.24
[JS] 정규식 예제들  (0) 2021.01.21
[JS] 제이쿼리 id, class, name 속성 값 가져오기  (0) 2021.01.21
    '...' 카테고리의 다른 글
    • [Oracle] COUNT() 집계함수 사용하기
    • [Oracle] Listener refused the connection with the following error
    • [CA] 동기(Blocking)와 비동기(Non-Blocking)
    • [JS] 정규식 예제들
    rownum, ROWNUMBER, row_number(), 오라클 순번
    KoB
    KoB
    Lunit CSG - Backend Engineer 로 일하고 있습니다 👨‍💻
    댓글쓰기

    티스토리툴바