SQL rangerer over

SQL rangerer over
Rangering i SQL lar deg beregne rangering av hver post innenfor en partisjon innen et resultatsett.

Rank () vil returnere en 1-basert indeks for hver post i en bestilt partisjon i standard SQL. Husk at funksjonen vil tilordne samme rangeringsverdi til partisjonene med lignende verdier.

Antall tidligere rangeringsverdier øker hver påfølgende rad rangeringsverdi. Hvis du ønsker å øke rangeringsverdien med 1, bruk den tette_rank () -funksjonen.

Rank () Funksjonssyntaks

Syntaks for rangfunksjonen er som vist nedenfor:

Rang () over (
[Partisjon etter uttrykk,]
Rekkefølge etter uttrykk (ASC | desc));
);

For å illustrere hvordan du bruker denne funksjonen, bør du vurdere eksemplet nedenfor:

Lag tabellbrukere (
ID Seriell primærnøkkel,
First_name varchar (100),
Last_name varchar (100),
State Varchar (25),
aktiv bool
);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Mary', 'Smith', 'New York', True);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Linda', 'Williams', 'Colorado', falsk);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Taylor', 'Moore', 'Utah', True);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Susan', 'Wilson', 'Washington', True);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Mary', 'Smith', 'New York', True);
Sett inn brukere (First_name, Last_name, State, Active) verdier (
'Taylor', 'Moore', 'Utah', True);

Ovennevnte spørsmål oppretter og setter inn prøvedata i tabellen.

For å tilordne en rangering til postene i resultatsettet, kan vi bruke rang () -funksjonen som illustrert nedenfor.

Velg ID, First_name, Last_name, State, Active,
Rank () over (partisjon etter aktiv ordre etter id) rank_value
fra brukere;

I spørringen ovenfor partner vi dataene etter den aktive kolonnen. Kolonnen inneholder boolske verdier. Vi rangerer deretter over hvert element i partisjonene.

Det resulterende settet er som vist:

Merk at resultatet inneholder to partisjoner, den ene inneholder falske verdier og den andre som inneholder sanne verdier.

I den "falske" partisjonen tildeler funksjonen rangeringsverdiene. Samme sak for den "sanne" partisjonen. Merk at funksjonen starter rangverdien fra 1 i en ny partisjon.

Lukking

Denne opplæringen viste deg hvordan du kan utføre radrangering ved å dele opp ved å bruke Rank () -funksjonen. Sjekk dokumentasjonen for databasemotoren din for å lære mer.

Takk for at du leste!!