Udostępnij za pośrednictwem


DENSE_RANK (Transact-SQL)

Zwraca pozycję wiersze w partycji zestaw wyników, bez żadnych przerw w klasyfikacji.Pozycja wiersza jest jeden powiększona o liczbę odrębnych rangę, dostarczanych przed wierszem danego.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • <partition_by_clause>
    Dzieli zestaw wyników produkowanych przez FROM klauzula do partycji stosowane jest DENSE_RANK funkcja .Zobacz składnię PARTYCJI przez Klauzula OVER (Transact-SQL).

  • <order_by_clause>
    Określa kolejność, w której wartości DENSE_RANK są stosowane do wierszy w partycji.Liczba całkowita nie może reprezentować kolumna w <order_by_clause> , używany w klasyfikacji funkcja.

Zwracane typy

bigint

Uwagi

Jeśli dwa lub więcej wierszy powiązanie funkcji pozycja w tej samej partycji, poszczególnych wierszy wiązanej otrzymuje tę samą rangę.Na przykład, jeśli dwóch sprzedawców mają taki sam SalesYTD wartości, zarówno Uszeregowano je jeden.Sprzedawcy z następnego najwyższego SalesYTD klasyfikację numer dwa.Jest to jedna większa niż liczba wierszy distinct, dostarczanych przed tego wiersza.W związku z tym liczby zwróconych przez funkcja DENSE_RANK ma luki i nie zawsze mieć kolejnych rangę.

kolejność sortowania używane dla całej kwerendy określa kolejność wyświetlania wierszy w wyniku.Wynika z tego wiersza pierwsze nie ma być pierwszy wiersz w tej partycji.

Przykłady

Poniższy przykład zwraca DENSE_RANK ilości produktów w różnych lokalizacjach.Należy zauważyć, że ORDER BY w OVERzamówieńklauzula DENSE_RANK i ORDER BY z SELECTinstrukcja zamówienia, zestaw wyników.

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