Sök…


Syntax

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

parametrar

Argument detaljer
<partition_by_clause> Delar resultatuppsättningen som producerats av FROM- klausulen i partitioner som DENSE_RANK funktionen tillämpas på. För PARTITION BY , se OVER Clause (Transact-SQL) .
<order_by_clause> Bestämmer i vilken ordning DENSE_RANK funktionen tillämpas på raderna i en partition.
OVER ( [ partition_by_clause ] order_by_clause) partition_by_clause delar resultatuppsättningen som produceras av FROM klausulen i partitioner som funktionen tillämpas på. Om det inte anges behandlar funktionen alla rader i frågeställningsresultatet som en enda grupp. order_by_clause bestämmer ordningen på data innan funktionen tillämpas. Order_by_clause krävs. <rows or range clause> för OVER klausulen kan inte anges för RANK funktionen. Mer information finns i OVER Clause (Transact-SQL) .

Anmärkningar

Om två eller flera rader binder för en rang i samma partition får varje bundna rader samma rang. Till exempel, om de två bästa säljarna har samma SalesYTD-värde, rankas de båda som en. Säljaren med näst högsta SalesYTD är rankad som nummer två. Detta är mer än antalet distinkta rader som kommer före den här raden. Därför har siffrorna som returneras av DENSE_RANK funktionen inte luckor och har alltid i följd.

Den sorteringsordning som används för hela frågan avgör i vilken ordning raderna visas i ett resultat. Detta innebär att en rad rankad som nummer en inte behöver vara den första raden i partitionen.

DENSE_RANK är nollbestämd. För mer information, se Deterministiska och nondeterministiska funktioner .

RANG()

A RANK () Returnerar rangordningen för varje rad i resultatuppsättningen av den partitionerade kolumnen.

T.ex :

Select Studentid,Name,Subject,Marks,
RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name,subject

   Studentid    Name    Subject    Marks    Rank

    101         Ivan    Maths       70       2
    101         Ivan    Science     80       1
    101         Ivan    Social      60       3
    102         Ryan    Maths       60       2
    102         Ryan    Science     50       3
    102         Ryan    Social      70       1
    103         Tanvi   Maths       90       1
    103         Tanvi   Science     90       1
    103         Tanvi   Social      80       3

DENSE_RANK ()

Samma som RANK (). Det returnerar rang utan några luckor:

Select  Studentid, Name,Subject,Marks,
DENSE_RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name

Studentid    Name    Subject    Marks    Rank
101          Ivan    Science    80       1
101          Ivan    Maths      70       2
101          Ivan    Social     60       3
102          Ryan    Social     70       1
102          Ryan    Maths      60       2
102          Ryan    Science    50       3
103          Tanvi   Maths      90       1
103          Tanvi   Science    90       1
103          Tanvi   Social     80       2


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow