순위 함수(Transact-SQL)
업데이트: 2006년 7월 17일
순위 함수는 파티션에서 각 행의 순위 값을 반환합니다. 사용하는 함수에 따라 어떤 행은 다른 행과 동일한 값을 받을 수 있습니다. 순위 함수는 확정적이지 않습니다.
Transact-SQL은 다음과 같은 순위 함수를 제공합니다.
예
다음은 동일한 쿼리에 사용된 4가지 순위 함수를 보여 줍니다. 함수별 예에 대한 자세한 내용은 각 순위 함수를 참조하십시오.
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
,ROW_NUMBER() OVER (ORDER BY a.PostalCode) AS 'Row Number'
,RANK() OVER (ORDER BY a.PostalCode) AS 'Rank'
,DENSE_RANK() OVER (ORDER BY a.PostalCode) AS 'Dense Rank'
,NTILE(4) OVER (ORDER BY a.PostalCode) AS 'Quartile'
,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s
INNER JOIN Person.Contact c
ON s.SalesPersonID = c.ContactID
INNER JOIN Person.Address a
ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL
AND SalesYTD <> 0;
결과 집합은 다음과 같습니다.
FirstName | LastName | Row Number | Rank | Dense Rank | Quartile | SalesYTD | PostalCode |
---|---|---|---|---|---|---|---|
Maciej |
Dusza |
1 |
1 |
1 |
1 |
4557045 |
98027 |
Shelley |
Dyck |
2 |
1 |
1 |
1 |
5200475 |
98027 |
Linda |
Ecoffey |
3 |
1 |
1 |
1 |
3857164 |
98027 |
Carla |
Eldridge |
4 |
1 |
1 |
1 |
1764939 |
98027 |
Carol |
Elliott |
5 |
1 |
1 |
2 |
2811013 |
98027 |
Jauna |
Elson |
6 |
6 |
2 |
2 |
3018725 |
98055 |
Michael |
Emanuel |
7 |
6 |
2 |
2 |
3189356 |
98055 |
Terry |
Eminhizer |
8 |
6 |
2 |
3 |
3587378 |
98055 |
Gail |
Erickson |
9 |
6 |
2 |
3 |
5015682 |
98055 |
Mark |
Erickson |
10 |
6 |
2 |
3 |
3827950 |
98055 |
Martha |
Espinoza |
11 |
6 |
2 |
4 |
1931620 |
98055 |
Janeth |
Esteves |
12 |
6 |
2 |
4 |
2241204 |
98055 |
Twanna |
Evans |
13 |
6 |
2 |
4 |
1758386 |
98055 |
변경 내역
릴리스 | 내역 |
---|---|
2006년 7월 17일 |
|
참고 항목
참조
함수(Transact-SQL)
OVER 절(Transact-SQL)