SQL Server Rank -funksjon

SQL Server Rank -funksjon

Det er et grunnleggende behov for å kategorisere eller rangere forskjellige poster når du jobber med data. For eksempel kan du rangere team basert på score, ansatte basert på lønnen deres og mange flere.

De fleste av oss utfører beregninger ved å bruke funksjoner som returnerer en enkelt verdi. I denne guiden vil vi utforske hvordan du bruker SQL Server Rank -funksjonen for å returnere en samlet verdi for en spesifikk radgruppe.

SQL Server Rank () Funksjon: Det grunnleggende

Rank () -funksjonen er en del av SQL Server -vindusfunksjonene. Det fungerer ved å tilordne en rangering til hver rad for en bestemt partisjon av det resulterende settet.

Funksjonen tildeler samme rangeringsverdi for radene innenfor en lignende partisjon. Den tildeler den første rangering, verdien av 1, og tilfører en påfølgende verdi til hver rangering.

Syntaks for rangfunksjonen er som:

rangere over (
[partisjon etter uttrykk],
Bestill etter uttrykk [ASC | Desc]
);

La oss bryte ned syntaks ovenfor.

Partisjonen etter klausul deler rader i spesifikke partisjoner der rangfunksjonen brukes. For eksempel, i en database som inneholder ansattes data, kan du dele opp rader basert på avdelingene de jobber.

Neste leddet, ordre av, definerer rekkefølgen som radene er organisert i de spesifiserte partisjonene.

SQL Server Rank () Funksjon: Praktisk bruk

La oss ta et praktisk eksempel for å forstå hvordan vi bruker Rank () -funksjonen i SQL Server.

Begynn med å lage en eksempeltabell som inneholder ansattes informasjon.

Lag tabellutviklere (
id int identitet (1,1), ikke en null primærnøkkel,
Navn varchar (200) ikke null,
Avdelingen varchar (50),
Lønnspenger
);

Deretter legger du til noen data i tabellen:

Sett inn i utviklere (navn, avdeling, lønn)
Verdier ('Rebecca', 'Game Developer', $ 120000),
('James', 'Mobile Developer', $ 110000),
('Laura', 'DevOps Developer', $ 180000),
('Quill', 'Mobile Developer', $ 109000),
('John', 'full-stack utvikler', $ 182000),
('Matthew', 'Game Developer', $ 140000),
('Caitlyn', 'DevOps Developer', $ 123000),
('Michelle', 'Data Science Developer', $ 204000),
('Antony', 'Front-end Developer', $ 103100),
('Khadija', 'Backend Developer', $ 193000),
('Joseph', 'Game Developer', $ 11500);
Velg * fra utviklere;

Du bør ha et bord med postene som vist:

Eksempel 1: Bestill av

Bruk rangfunksjonen til å tilordne rangeringer til dataene. Et eksempel på spørring er som vist:

Velg *, rang () over (bestilling etter avdeling) som rank_number fra utviklere;

Spørringen ovenfor skal gi utdata som vist:

Utgangen over viser at funksjonen tildelte radene fra lignende avdelinger en lignende rangeringsverdi. Legg merke til at funksjonen hopper over noen rangeringsverdier avhengig av antall verdier som har samme rangering.

Fra rangering av 7 hopper for eksempel funksjonen til rangering 10, ettersom rang 8 og 9 er tildelt de to påfølgende rang 7 -verdiene.

Eksempel 2: partisjon av

Tenk på eksemplet nedenfor. Den bruker rangfunksjonen for å tilordne en rangering til utviklerne i samme avdeling.

Velg *, rang () over (partisjon etter avdelingsordre etter lønn DESC) som rank_number fra utviklere;

Spørringen over starter med å dele opp radene i henhold til avdelingene deres. Deretter sorterer ordren etter klausul postene i hver partisjon etter lønnen i synkende rekkefølge.

Den resulterende utgangen er som vist:

Konklusjon

I denne guiden dekket vi hvordan du jobber med rangeringsfunksjonen i SQL Server, slik at du kan skille seg og rangere rader.

Takk for at du leste!