RANK
Omschrijving
RANK
is een aggregatiefunctie voor vensters die wordt gebruikt om een rangnummer toe te wijzen aan elke rij in een groep. Als meerdere rijen dezelfde rangordewaarde hebben (er is een gelijkspel), wordt dezelfde rangordewaarde toegewezen aan de gekoppelde rijen en wordt de volgende rangorde overgeslagen.De
PARTITION BY
bepaalt welke velden moeten worden gebruikt om een set invoerrijen in groepen te partitioneren.De
ORDER BY
bepaalt hoe de rijen in de partitie worden gerangschikt voordat ze worden gerangschikt. De invoerrijen worden in groepen gescheiden in groepen op basis van de partitioneringsvelden, de rijen worden geordend op basis van de volgordevelden en berekent vervolgens de aggregatieexpressie (positie voor deze functie) in elke groep. De gerangschikte rijen in elke groep beginnen bij 1.
Syntaxis
RANK()OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]] )
Retourwaarde
Retourneert een waarde van het type
Integer
.Invoerparameters
- OVER()
- Vereist.OVERmoet worden gebruikt binnen aRANKexpressie.
- PARTITION BYpartitioning_field
- Vereist. De . gebruikenPARTITION BYom een of meer velden op te geven voor het partitioneren van een groep invoerrijen. U kunt elk veldtype opgeven, behalve Valuta. Voorbeeld: u geeft het veld Maand op als het partitioneringsveld, zodat alle records met dezelfde waarde voor Maand in Workday worden gegroepeerd in één partitie.
- ORDER BYordering_field
- Vereist. De . gebruikenORDER BYom op te geven hoe de invoerrijen in de partitie moeten worden geordend met behulp van de waarden in het opgegeven veld binnen elke partitie. U kunt elk veldtype opgeven, behalve Valuta.U kunt de gebruikenDESCofASCtrefwoorden om te sorteren in aflopende volgorde (van hoge naar lage waarden, NULL-waarden zijn laatste) of oplopende volgorde (van lage naar hoge waarden, NULL-waarden zijn eerst) voor elk bestelveld. Als u geen sorteervolgorde voor een bestelveld opgeeft, worden de rijen automatisch in oplopende volgorde gesorteerd.
Voorbeelden
Voorbeeld: u hebt een gegevensset met deze rijen en velden.
Werknemer | Verkoopdatum | Verkoop |
|---|---|---|
Goho | 31-12-2018 | 140 |
Goho | 30-11-2018 | 60 |
Goho | 31-10-2018 | 140 |
Freeman | 31-12-2018 | 160 |
Freeman | 30-11-2018 | 60 |
Freeman | 31-10-2018 | 110 |
Smit | 31-12-2018 | 140 |
Smit | 30-11-2018 | 60 |
Smit | 31-10-2018 | 120 |
U kunt de verkopen voor elke werknemer in aflopende volgorde rangschikken, zodat de hoogste verkopen de rangorde van 1 krijgen. Gebruik deze expressie in het veld
'Verkopen rangschikken op werknemer'
:RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
U krijgt de volgende resultaten:
Werknemer | Verkoopdatum | Verkoop | Rangorde verkoop op werknemer |
|---|---|---|---|
Goho | 31-12-2018 | 140 | 1 |
Goho | 31-10-2018 | 140 | 1 |
Goho | 30-11-2018 | 60 | 3 |
Freeman | 31-12-2018 | 160 | 1 |
Freeman | 31-10-2018 | 110 | 2 |
Freeman | 30-11-2018 | 60 | 3 |
Smit | 31-12-2018 | 140 | 1 |
Smit | 31-10-2018 | 120 | 2 |
Smit | 30-11-2018 | 60 | 3 |
U kunt de verkopen voor elke datum ook in aflopende volgorde rangschikken, zodat de hoogste verkopen de rangorde van 1 krijgen. Gebruik deze expressie in het veld '
Verkopen rangschikken op datum'
:RANK() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
U krijgt de volgende resultaten:
Werknemer | Verkoopdatum | Verkoop | Verkopen rangschikken op datum |
|---|---|---|---|
Freeman | 31-12-2018 | 160 | 1 |
Goho | 31-12-2018 | 140 | 2 |
Smit | 31-12-2018 | 140 | 2 |
Goho | 30-11-2018 | 60 | 1 |
Freeman | 30-11-2018 | 60 | 1 |
Smit | 30-11-2018 | 60 | 1 |
Goho | 31-10-2018 | 140 | 1 |
Smit | 31-10-2018 | 120 | 2 |
Freeman | 31-10-2018 | 110 | 3 |
U ziet dat gekoppelde waarden hetzelfde rangnummer krijgen en dat de volgende rangorde wordt overgeslagen.