Funcția SQL DENSE_RANK().

Functia Sql Dense Rank



Funcțiile ferestrei sunt o caracteristică crucială în SQL și joacă un rol fundamental în calculele și operațiunile complexe ale datelor în bazele de date SQL. Una dintre funcțiile din funcțiile ferestrei SQL este dense_rank().

Funcția DENSE_RANK() ne permite să atribuim un rang unic fiecărui rând dintr-un set de rezultate pe baza valorilor dintr-o coloană mai specificată. Este foarte asemănătoare cu funcția rank(), dar cu ușoare diferențe în modul în care funcția gestionează înregistrările duplicate.

În acest tutorial, vom explora modul în care funcționează această funcție, sintaxa furnizată și cum o putem folosi într-o bază de date.







Cum functioneaza

Să începem prin a explica cum funcționează această funcție. Este bine să rețineți că funcția este la nivel înalt și nu putem explica implementarea de bază.



Funcția funcționează prin atribuirea unui rang fiecărui rând din setul de rezultate începând de la rangul 1 și crescând cu 1 pentru fiecare valoare unică din coloane.



Rândurile cu valori similare (duplicate) din coloanele specificate sunt alocate cu același rang, iar următorul rând cu o valoare diferită este atribuit cu următorul rang disponibil, fără niciun interval.





După cum am menționat, funcția nu lasă goluri acolo unde există valori duplicate, ceea ce o face diferită de funcția rank().

O utilizare comună a funcției dense_rank() este efectuarea operațiilor de clasare. De exemplu, îl putem folosi pentru a găsi primele N înregistrări etc.



Sintaxa funcției:

În cele ce urmează, este descrisă sintaxa funcției dense_rank():

DENSE_RANK() PENTRU (

[PARTIȚIE DIN expresie_partiție, ... ]

ORDIN DE sortare_expresie [ASC | DESC],...

)

În sintaxa dată:

  1. Începem cu funcția dense_rank() în sine.
  2. Clauza OVER semnalează începutul specificațiilor funcției ferestrei. Aceasta definește modul în care se aplică clasamentul în setul de rezultate.
  3. PARTITION BY expresia_partiției este o clauză opțională care ne permite să partiționăm setul rezultat în grupuri sau partiții bazate pe una sau mai multe coloane. Clasamentul este aplicat separat pe fiecare partiție, cu resetarea rangului la o nouă partiție.
  4. ORDER BY sort_expression specifică ordinea în care dorim să folosim pentru sortarea datelor din partițiile rezultate.

Eșantion de date

Pentru a demonstra cum să folosiți funcția dense_rank(), să începem cu un tabel cu un exemplu de date. În cazul nostru, folosim un exemplu de tabel „comenzi” după cum urmează:

Exemplul 1: Utilizarea funcției Dense_Rank().

Putem folosi funcția dense_rank() pentru a clasifica comenzile rezultate în funcție de preț. Luați în considerare următorul exemplu de interogare:

SELECTAȚI

Comanda ID,

client_nume utilizator,

produs_achizitionat,

DENSE_RANK() PENTRU (

ORDIN DE

price DESC

) price_rank

DIN

comenzi o;

În exemplul dat, folosim funcția dense_rank() pentru a clasifica datele în funcție de prețul comenzilor. Omitem clauza PARTITION BY deoarece nu grupăm datele.

Rezultatul rezultat este după cum urmează:

Exemplul 2: PARTITION BY

De asemenea, putem adăuga clauza PARTITION BY pentru a grupa datele în diferite segmente, cum ar fi pe baza produsului achiziționat.

Un exemplu de interogare este după cum urmează:

SELECTAȚI

Comanda ID,

client_nume utilizator,

produs_achizitionat,

DENSE_RANK() PENTRU (

împărțire după produs_cumpărat

ORDIN DE

price DESC

) price_rank

DIN

comenzi o;

Aceasta ar trebui să grupeze datele în diferite grupuri pe baza grupurilor rezultate și să aplice rangul pentru articolele din fiecare grup.

Concluzie

În această postare, am învățat elementele de bază ale utilizării și lucrului cu funcția de fereastră dense_rank() în SQL pentru a atribui un rang valorilor bazate pe anumite coloane.