SQL DENSE_RANK() Funktion

Sql Dense Rank Funktion



Vinduesfunktioner er en afgørende funktion i SQL og spiller en grundlæggende rolle i komplekse databeregninger og operationer i SQL-databaser. En af funktionerne i SQL-vinduets funktioner er dense_rank().

Funktionen DENSE_RANK() giver os mulighed for at tildele en unik rangering til hver række i et resultatsæt baseret på værdierne i en mere specificeret kolonne. Den minder meget om rank()-funktionen, men med små forskelle i, hvordan funktionen håndterer de duplikerede poster.

I denne vejledning vil vi undersøge, hvordan denne funktion fungerer, den medfølgende syntaks, og hvordan vi kan bruge den i en database.







Hvordan det virker

Lad os starte med at forklare, hvordan denne funktion fungerer. Det er godt at huske på, at funktionen er på højt niveau, og vi kan ikke forklare den bagvedliggende implementering.



Funktionen fungerer ved at tildele en rang til hver række i resultatsættet startende fra rang 1 og øge med 1 for hver unik værdi i kolonnerne.



Rækkerne med lignende værdier (duplikater) i de angivne kolonner tildeles den samme rang, og den næste række med en anden værdi tildeles den næste tilgængelige rangordning, uden huller.





Som vi nævnte, efterlader funktionen ingen huller, hvor der er duplikerede værdier, hvilket gør den forskellig fra rank()-funktionen.

En almindelig brug af funktionen dense_rank() er at udføre rangeringsoperationerne. For eksempel kan vi bruge det til at finde de øverste N poster osv.



Funktionssyntaks:

Det følgende beskriver syntaksen for dense_rank()-funktionen:

DENSE_RANK() OVER (

[PARTITION BY partition_expression, ... ]

BESTILLE BY sort_expression [ASC | DESC], ...

)

I den givne syntaks:

  1. Vi starter med selve dense_rank()-funktionen.
  2. OVER-sætningen signalerer starten af ​​vinduesfunktionsspecifikationerne. Dette definerer, hvordan rangeringen anvendes i resultatsættet.
  3. PARTITION BY partition_expression er en valgfri klausul, der giver os mulighed for at partitionere det resulterende sæt i grupper eller partitioner baseret på en eller flere kolonner. Rangeringen anvendes separat på hver partition med nulstilling af rang på en ny partition.
  4. ORDER BY sort_expression angiver den rækkefølge, som vi ønsker at bruge til at sortere dataene i de resulterende partitioner.

Eksempel på data

For at demonstrere, hvordan man bruger dense_rank()-funktionen, lad os starte med en tabel med eksempeldata. I vores tilfælde bruger vi en eksempel 'ordre' tabel som følger:

Eksempel 1: Dense_Rank() funktionsbrug

Vi kan bruge funktionen dense_rank() til at rangere de resulterende ordrer baseret på prisen. Overvej følgende eksempelforespørgsel:

VÆLG

Ordre ID,

kunde_brugernavn,

produkt_købt,

DENSE_RANK() OVER (

BESTILLE VED

pris DISC

) pris_rang

FRA

ordrer o;

I det givne eksempel bruger vi funktionen dense_rank() til at rangere data baseret på prisen på ordrer. Vi udelader PARTITION BY-klausulen, da vi ikke grupperer dataene.

Det resulterende output er som følger:

Eksempel 2: OPDELING AF

Vi kan også tilføje PARTITION BY-klausulen for at gruppere dataene i forskellige segmenter, f.eks. baseret på det købte produkt.

Et eksempel på en forespørgsel er som følger:

VÆLG

Ordre ID,

kunde_brugernavn,

produkt_købt,

DENSE_RANK() OVER (

partition efter produkt_købt

BESTILLE VED

pris DISC

) pris_rang

FRA

ordrer o;

Dette bør gruppere dataene i forskellige grupper baseret på de resulterende grupper og anvende rangeringen for elementerne i hver gruppe.

Konklusion

I dette indlæg lærte vi det grundlæggende i at bruge og arbejde med dense_rank()-vinduefunktionen i SQL for at tildele en rang til værdierne baseret på specifikke kolonner.