Bruke MySQL DENSE_RANK -funksjon

Bruke MySQL DENSE_RANK -funksjon
MySQL DENSE_RANK () -funksjonen er en funksjon som viser rangering av en rad i sin partisjon uten hull i rangeringsverdiene. Denne funksjonen er en vindusfunksjon, som betyr at den har likheter med funksjoner som Row_number () og Rank () -funksjoner.

Denne opplæringen skal fordype seg dypere i hvordan MySQL -tette funksjon fungerer og hvordan vi kan bruke den i forskjellige databaseoperasjoner. Hvis du vil følge med denne opplæringen, kan du vurdere å laste ned Sakila -eksempeldatabasen fra ressursen som er gitt nedenfor:

https: // dev.mysql.com/doc/indeks-annet.html

Grunnleggende bruk

MySQL DENSE_RANK () -funksjonen viser rekkene på en rad innenfor en partisjon uten hull. Radens rekker øker med en verdi av 1 fra den unike rangverdien til forrige rad.

Den generelle syntaksen til den tette_rank () -funksjonen er som:

Velg Col1 Dense_Rank () over (partisjon av expr bestill av expr [asc | desc]) rank_col_name fra tb_name

La oss undersøke ovennevnte spørringssyntaks nærmere.

Den tette_rank () -funksjonen binder seg til valgklausulen, som vil vise rekkene til radene fra det spesifiserte tabellen.

DENSE_RANK () Over seksjoner Returer resultatet av DENSE_RANK () -funksjonen og utdataene som holdes i kolonnenavnet som er spesifisert.

Partisjonen med klausul deler resultatene som er returnert med fra -klausulen til partisjoner. Den tette_rank () -funksjonen brukes på hver partisjon.

Til slutt spesifiserer ordren etter seksjonen rekkefølgen på de innstilte radene i hver partisjon.

Eksempel Bruk sak

La oss bruke en eksempeldatabase for å illustrere hvordan vi kan bruke DENSE_RANK () -funksjonen. For dette eksemplet skal vi bruke Sakila -databasen, og mer spesifikt filmbordet i Sakila -databasen.

Ved hjelp av DENSE_RANK () -funksjonen kan vi rangere filmene etter deres leiepris, som vist i spørringen nedenfor:

Bruk Sakila;
Velg tittel, Release_year, Rating, Lengde, Dense_Rank () Over (Partition by Release_year Order by Rental_rate ASC) RANK_VALUE FRA FILM;

På grunn av den enorme mengden data om Sakila-databasen, vil jeg organisere utdataene for enklere lesing og illustrasjon.

Utgangen er under:



Hvis du ser nøye på utdataene ovenfor, vil du legge merke til at de resulterende utgangene varierer fra rang 1 til 3, som tilsvarer utleieverdiene i filmtabellen. Leieverdiene er:

  1. 0.99 - Rang 1
  2. 2.99 - Rang 2
  3. 4.99 - Rang 3

I eksemplet ovenfor brukte vi partisjonen med klausul for å dele de resulterende settene i forskjellige partisjoner, i dette tilfellet Release_year.

Deretter brukte vi MySQL -ordren etter uttalelsen for å bestille filmene etter leieprisen i stigende rekkefølge. Til slutt brukte vi DENSE_RANK () -funksjonen på hver partisjon som er spesifisert i rekkefølgen ved uttalelse.

Konklusjon

I denne opplæringen forklarte vi hvordan funksjonen DENSE_RANK () fungerer i en database og brukte et ekte eksempel for å illustrere hvordan du bruker den.

Du kan lære mer om DENSE_RANK () AD Andre vindusfunksjoner fra ressursen som er gitt nedenfor:

https: // dev.mysql.com/doc/refman/8.0/no/vindusfunksjoner.html