[MSSQL] ROWNUM 사용법 정리 (조회 순번, 조회 개수)

SQL Server에서는 오라클에서 사용하는 ROWNUM은 사용할 수 없다. 그러나 TOPROW_NUMBER 함수를 사용하여 비슷한 결과를 만들 수 있다.

 

ROWNUM은 주로 아래의 2가지 경우에 많이 사용한다.

  • 조회 개수를 제한하는 경우
  • 조회 순번을 매기는 경우

 

조회 개수를 제한하는 경우

SELECT TOP(5)
       ename
     , job
     , sal
  FROM emp

 

 

SELECT 절에 TOP(개수)를 사용하여 조회 개수를 제한할 수 있다.

 

오라클의 ROWNUM은 ORDER BY가 수행되기 전에 개수를 제한하므로 정렬이 적용되지 않지만, TOP은 SELECT 절에 있기 때문에 ORDER BY가 있을 경우 정렬 후 개수를 제한한다.

 

오라클 예시 : WHERE ROWNUM <= 5

 

SELECT TOP(4) WITH TIES
       job
     , deptno
  FROM emp
 ORDER BY job, deptno

 

 

TOP(4) WITH TIES 키워드를 사용하면 마지막 순위와 같은 값을 가진 행인 경우 모두 표시한다.

 

조회 순번을 매기는 경우

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS rownum
     , ename
     , job
     , sal
  FROM emp
 WHERE sal > 2000

 

 

ROW_NUMBER 함수를 사용할 때는 ORDER BY를 필수로 사용해야하는데, 의미없는 (SELECT 1)을 부여하여 ORDER BY 없이 조회된 결과의 순번을 부여한다.

 

오라클의 ROWNUM과 동일하다.

 

SELECT ROW_NUMBER() OVER(ORDER BY sal DESC) AS rownum
     , ename
     , job
     , sal
  FROM emp
 WHERE sal > 2000

 

 

ORDER BY에 정렬 컬럼을 사용하면 정렬 후 순번이 부여된다.

 

SELECT ROW_NUMBER() OVER(PARTITION BY job ORDER BY job, sal DESC) AS rownum
     , ename
     , job
     , sal
  FROM emp
 WHERE sal > 2000

 

 

PARTITION BY를 사용하면 그룹별 순번을 부여할 수 있다.

 

예제쿼리(테이블뷰포함).txt
0.00MB

 

[MSSQL] 순번 매기기 (ROW_NUMBER 함수)

SQL Server에서 조회된 데이터에 순번을 매기기 위해서는 ROW_NUMBER 함수를 사용하면 된다. ROW_NUMBER 함수는 분석 함수이기 때문에 OVER 절과 함께 사용해야 한다. ROW_NUMBER 함수와 비슷한 순위를 구할

gent.tistory.com

 

댓글

Designed by JB FACTORY