POZYCJA (języka Transact-SQL)

Zwraca procentową pozycję każdego wiersza w partycji z zestaw wyników.Pozycja wiersza jest jeden przesunięta o liczbę rangę dostarczanych przed wierszem danych.

Topic link iconKonwencje składni języka Transact-SQL

RANK ( )    OVER ( [ < partition_by_clause > ] < order_by_clause > )

Argumenty

  • < partition_by_clause >
    Dzieli zestaw wyników, wyprodukowane przez Z klauzula na partycje, do której zastosowana jest funkcja RANK.Aby zapoznać się ze składnią PARTITION BY zobacz W klauzula (języka Transact-SQL).

  • < order_by_clause >
    Określa kolejność, w którym pozycja wartości są stosowane do wierszy w partycji.Aby uzyskać więcej informacji zobaczORDER BY Clause (Transact-SQL).Liczba całkowita nie może reprezentować kolumna po <order_by_clause> używany w funkcja klasyfikacji.

Zwracane typy

bigint

Remarks

Jeśli dwa lub więcej wierszy powiązanie dla pozycję, każdy wiązanej wierszy otrzymuje tę samą rangę.Na przykład, jeśli dwóch sprzedawców mają taki sam SalesYTD wartość one są oba uporządkowane jeden. Sprzedawcy z następnego najwyższego SalesYTD jest ujęte w rankingu numer 3, ze względu na to, że dostępne są dwa wiersze, które są wyżej w klasyfikacji.Dlatego zawsze Funkcja RANK nie zwraca kolejnych liczb całkowitych.

Kolejność sortowania, używany w całości kwerendy określa kolejność wyświetlania wierszy zestaw wyników.

Przykłady

W poniższym przykładzie prowadzi ranking produktów, w zależności od ich ilości w magazynie.Zestaw wierszy jest podzielony na partycje przez LocationID i posortowane według Quantity. Zwróć uwagę, że ORDER BY w OVER Klauzula zamówień RANK oraz ORDER BY z SELECT Instrukcja zamówień zestaw wyników.

USE AdventureWorks;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity
    ,RANK() OVER 
    (PARTITION BY i.LocationID ORDER BY i.Quantity DESC) AS 'RANK'
FROM Production.ProductInventory i 
    INNER JOIN Production.Product p 
        ON i.ProductID = p.ProductID
ORDER BY p.Name;
GO