SQL funkcija DENSE_RANK().

Sql Funkcija Dense Rank



Funkcije prozora su ključna značajka u SQL-u i igraju temeljnu ulogu u složenim izračunima podataka i operacijama u SQL bazama podataka. Jedna od funkcija u funkcijama SQL prozora je dense_rank().

Funkcija DENSE_RANK() omogućuje nam dodjeljivanje jedinstvenog ranga svakom retku unutar skupa rezultata na temelju vrijednosti u još jednom određenom stupcu. Vrlo je slična funkciji rank(), ali s malim razlikama u tome kako funkcija obrađuje dvostruke zapise.

U ovom vodiču ćemo istražiti kako ova funkcija radi, danu sintaksu i kako je možemo koristiti u bazi podataka.







Kako radi

Počnimo s objašnjenjem kako ova funkcija radi. Dobro je imati na umu da je funkcija visoke razine i da ne možemo objasniti temeljnu implementaciju.



Funkcija funkcionira dodjeljivanjem ranga svakom retku u skupu rezultata počevši od ranga 1 i povećavajući se za 1 za svaku jedinstvenu vrijednost u stupcima.



Redovima sa sličnim vrijednostima (duplikatima) u navedenim stupcima dodjeljuje se isti rang, a sljedećem redu s različitom vrijednošću dodjeljuje se sljedeći dostupni rang, bez razmaka.





Kao što smo spomenuli, funkcija ne ostavlja nikakve praznine gdje postoje duplicirane vrijednosti, što je čini različitom od funkcije rank().

Uobičajena uporaba funkcije dense_rank() je izvođenje operacija rangiranja. Na primjer, možemo ga koristiti za pronalaženje prvih N zapisa, itd.



Sintaksa funkcije:

Sljedeće opisuje sintaksu funkcije dense_rank():

DENSE_RANK() PREKO (

[PARTICIJA PO particionom_izrazu, ...]

NARUDŽBA BY sort_expression [ASC | DESC], ...

)

U navedenoj sintaksi:

  1. Počinjemo sa samom funkcijom dense_rank().
  2. Klauzula OVER signalizira početak specifikacije funkcije prozora. Ovo definira kako se rangiranje primjenjuje unutar skupa rezultata.
  3. PARTITION BY partition_expression je izborna klauzula koja nam omogućuje particioniranje rezultirajućeg skupa u grupe ili particije na temelju jednog ili više stupaca. Poredak se primjenjuje zasebno na svaku particiju s resetiranjem ranga na novoj particiji.
  4. ORDER BY sort_expression navodi redoslijed kojim želimo koristiti za sortiranje podataka u rezultirajućim particijama.

Uzorak podataka

Da bismo pokazali kako se koristi funkcija dense_rank(), počnimo s tablicom s oglednim podacima. U našem slučaju koristimo primjer tablice 'narudžbi' kako slijedi:

Primjer 1: Upotreba funkcije Dense_Rank().

Možemo koristiti funkciju dense_rank() za rangiranje rezultirajućih naloga na temelju cijene. Razmotrite sljedeći primjer upita:

IZABERI

ID_narudžbe,

korisničko_ime_kupca,

proizvod_kupljen,

DENSE_RANK() PREKO (

NARUDŽBA PO

cijena DISK

) rang_cijene

IZ

naređuje o;

U navedenom primjeru koristimo funkciju dense_rank() za rangiranje podataka na temelju cijene naloga. Izostavljamo klauzulu PARTITION BY jer ne grupiramo podatke.

Rezultirajući izlaz je sljedeći:

Primjer 2: PODJELA PO

Također možemo dodati klauzulu PARTITION BY za grupiranje podataka u različite segmente, primjerice na temelju kupljenog proizvoda.

Primjer upita je sljedeći:

IZABERI

ID_narudžbe,

korisničko_ime_kupca,

proizvod_kupljen,

DENSE_RANK() PREKO (

podjela prema kupljenom proizvodu

NARUDŽBA PO

cijena DISK

) rang_cijene

IZ

naređuje o;

Ovo bi trebalo grupirati podatke u različite grupe na temelju dobivenih grupa i primijeniti rang za stavke u svakoj grupi.

Zaključak

U ovom smo postu naučili osnove korištenja i rada s prozorskom funkcijom dense_rank() u SQL-u za dodjeljivanje ranga vrijednostima na temelju određenih stupaca.