logo

SQL Server 행 번호

행 번호가 가장 일반적입니다. 순위 기능 SQL Server에서 사용됩니다. ROW_NUMBER() 함수 파티션 내의 각 행에 대해 일련 번호를 생성합니다. 결과 출력에서. 각 파티션에서 첫 번째 행 번호는 1로 시작합니다. 항상 다음을 사용해야 합니다. 주문 번호가 올바른 순서로 할당되었는지 확인하는 조항입니다. 이 함수에서 반환되는 값은 다음과 같습니다. 빅 INT 데이터 형식. 이 기능은 SQL Server 2005 이상 MS SQL 버전과 함께 제공됩니다.

ROW_NUMBER는 다음을 결정합니다. 일시적인 가치 쿼리가 실행될 때. 테이블의 숫자를 얻으려면 다음을 확인해야 합니다. 신원 재산과 순서 . SQL Server의 ROW_NUMBER 함수는 동일한 파티션에서 두 개의 동일한 값을 발견하면 서로 다른 순위 번호를 할당합니다. 순위 번호는 표시되는 순서에 따라 결정됩니다.

다음 사항이 참이 아닌 이상 이 함수에서 반환된 값이 각 실행마다 동일하게 정렬된다는 보장은 없습니다.

  • 분할된 열 값은 고유합니다.
  • ORDER BY 열 값이 고유합니다.
  • Partition과 Order By 열의 조합이 고유합니다.

통사론

다음은 ROW_NUMBER() 함수를 설명하는 구문입니다.

 ROW_NUMBER() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... ) 

ROW NUMBER() 함수의 구문을 이해해 보겠습니다.

위에

창 함수가 작동하는 창 또는 행 집합을 지정하는 이 절을 이해하는 것이 중요합니다. PARTITION BY 및 ORDER BY는 OVER 절의 두 가지 가능한 절입니다. OVER 절의 ORDER BY 표현식은 함수를 실행하기 위해 행이 특정 순서로 와야 하는 경우 지원됩니다.

파티션 기준

  • 결과 집합을 파티션(행 그룹)으로 분할하는 선택적 절입니다. 그런 다음 ROW NUMBER() 함수를 각 파티션에 적용하고 각 파티션의 순위 번호를 별도로 할당합니다.
  • partition by 절을 생략하면 ROW_NUMBER 함수는 전체 결과를 단일 파티션으로 처리하고 위에서 아래 순서로 순위를 제공합니다.

주문

이 절을 사용하면 각 파티션 내에서 결과 집합의 행을 정렬할 수 있습니다. ROW_NUMBER() 함수는 순서에 따라 달라지므로 필수 절입니다.

예를 들어 SQL Server 테이블에서 ROW_NUMBER 함수가 어떻게 작동하는지 이해해 보겠습니다. 먼저 '라는 이름의 테이블을 만듭니다. ' 아래 명령문을 사용합니다.

 CREATE TABLE Persons ( person_name varchar(45) NOT NULL, product varchar(45) DEFAULT NULL, country varchar(25) DEFAULT NULL, price float, years int NOT NULL ); 

다음으로 아래 명령문을 사용하여 이 테이블에 일부 레코드를 추가합니다.

 INSERT INTO Persons (person_name, product, country, price, years) VALUES ('Steffen', 'Computer', 'USA', 20000.00, 2018), ('Joseph', 'Laptop', 'India', 35000.00, 2016), ('Kevin', 'TV', 'USA', 15000.00, 2016), ('Thompson', 'Mobile', 'France', 12500.00, 2017), ('Donald', 'Laptop', 'England', 30000.00, 2018), ('Joseph', 'Mobile', 'India', 18000.00, 2018), ('Matthew', 'Desktop', 'France', 22000.00, 2017), ('Antonio', 'Mouse', 'England', 1200.00, 2016); 

다음으로, 다음을 사용하여 데이터를 확인합니다. 선택하다 성명. 우리는 아래와 같은 결과를 얻을 것입니다:

SQL Server 행 번호

1. 간단한 ROW_NUMBER() 예

다음 진술 그 사람의 세부 사항을 표시하고 순차적인 정수를 추가합니다. ROW_NUMBER()를 사용하여 각 행에:

 SELECT *, ROW_NUMBER() OVER (ORDER BY price) AS row_num FROM Persons; 

여기서는 ROW_NUMBER() 함수가 전체 결과 집합을 단일 파티션으로 처리하도록 PARTITION BY 절을 지정하지 않았습니다. 명령문을 실행하면 다음과 같은 결과가 출력됩니다.

SQL Server 행 번호

2. 파티션에 대한 ROW_NUMBER() 예시

안드로이드 이스터 에그가 뭐야?

이 예에서는 ROW NUMBER() 함수를 사용하여 테이블의 파티션 내 각 레코드에 일련 번호를 제공합니다. 연도가 변경되면 항상 행 번호를 다시 초기화했습니다.

 SELECT person_name, product, price, years, ROW_NUMBER() OVER ( PARTITION BY years ORDER BY price) AS row_num FROM Persons; 

여기서는 PARTITION BY 절을 사용하여 '명' 테이블을 기반으로 파티션으로 분할 '연령' 열. 실행 후에는 다음과 같은 결과가 출력됩니다.

SQL Server 행 번호

3. ROW_NUMBER() 페이지 매김 예시

페이지 매김을 위해 ROW_NUMBER() 함수를 사용할 수도 있습니다. 예를 들어 , 애플리케이션에 있는 모든 사람의 정보를 페이지 단위로 가져오려면 먼저 ROW_NUMBER() 함수를 사용하여 각 행에 일련 번호를 할당합니다. 둘째, 요청된 페이지별로 행을 정렬합니다.

다음 진술은 이를 보다 명확하게 설명합니다.

 SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) P WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>It will give the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-4.webp" alt="SQL Server Row Number"> <p>If we do not want to use the <strong>subquery</strong> , we can use the <strong>common table expression (CTE)</strong> as below statement:</p> <pre> WITH CTE_Person AS ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) SELECT * FROM CTE_Person WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>In this example, we have first specified the CTE that uses the ROW_NUMBER() function to assign each row in the result set sequentially. Second, the outer query returned the desired result. After execution, we will get the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-5.webp" alt="SQL Server Row Number"> <h3>Conclusion</h3> <p>In this article, we learned how to give a sequential number to each record within a partition of a query using the ROW NUMBER() function in SQL Server.</p> <hr></=></pre></=>